Skip to content

Wrong SourceSpan with lazy continuation lines #337

Description

@sylvainheraud

Hi !
I'm using commonmark-java to highlight delimiters in a RichTextFX editor, and using SourceSpan to compute positions.
I have an issue with 2 examples given by commonmark specification.

Example 292

> 1. > Blockquote
continued here.

Actual behavior (printing SourceSpan in visitChildren)

  • Text{literal=Blockquote} [SourceSpan{line=0, column=7, length=10}]
  • SoftLineBreak{} []
  • Text{literal=continued here.} [SourceSpan{line=1, column=0, length=15}]
  • Paragraph{} [SourceSpan{line=0, column=7, length=10}, SourceSpan{line=1, column=0, length=15}]
  • BlockQuote{} [SourceSpan{line=0, column=5, length=12}, SourceSpan{line=1, column=5, length=10}]
  • ListItem{} [SourceSpan{line=0, column=2, length=15}, SourceSpan{line=1, column=2, length=13}]
  • OrderedList{} [SourceSpan{line=0, column=2, length=15}, SourceSpan{line=1, column=2, length=13}]
  • BlockQuote{} [SourceSpan{line=0, column=0, length=17}, SourceSpan{line=1, column=0, length=15}]
  • Document{} []

I don't understand sourceSpans or the second line. It seems to me that BlockQuote/ListItem/OrderedList should start at column 0 for line 1.

Example 250

> > > foo
bar
  • Text{literal=foo} [SourceSpan{line=0, column=6, length=3}]
  • SoftLineBreak{} []
  • Text{literal=bar} [SourceSpan{line=1, column=0, length=3}]
  • Paragraph{} [SourceSpan{line=0, column=6, length=3}, SourceSpan{line=1, column=0, length=3}]
  • BlockQuote{} [SourceSpan{line=0, column=4, length=5}, SourceSpan{line=1, column=4, length=-1}]
  • BlockQuote{} [SourceSpan{line=0, column=2, length=7}, SourceSpan{line=1, column=2, length=1}]
  • BlockQuote{} [SourceSpan{line=0, column=0, length=9}, SourceSpan{line=1, column=0, length=3}]
  • Document{} []

I don't understand sourceSpan for the 3 BlockQuotes, some of them have negative length. It seems to me that all BlockQuotes should start at column 0 for line 1.

And If I add a character after bar

> > > foo
bars
  • Text{literal=foo} [SourceSpan{line=0, column=6, length=3}]
  • SoftLineBreak{} []
  • Text{literal=bars} [SourceSpan{line=1, column=0, length=4}]
  • Paragraph{} [SourceSpan{line=0, column=6, length=3}, SourceSpan{line=1, column=0, length=4}]
  • BlockQuote{} [SourceSpan{line=0, column=4, length=5}] MISSING SOURCE SPACE?
  • BlockQuote{} [SourceSpan{line=0, column=2, length=7}, SourceSpan{line=1, column=2, length=2}]
  • BlockQuote{} [SourceSpan{line=0, column=0, length=9}, SourceSpan{line=1, column=0, length=4}]
  • Document{} []

In this case, I lose the deepest BlockQuote sourceSpan for line 1

Thank you for your help.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions