Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion commonmark-ext-autolink/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-autolink</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-footnotes/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-footnotes</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-gfm-alerts/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-gfm-alerts</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-gfm-strikethrough/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-gfm-strikethrough</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-gfm-tables/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-gfm-tables</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-heading-anchor/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-heading-anchor</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-image-attributes/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-image-attributes</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-ins/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-ins</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-task-list-items/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-task-list-items</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-ext-yaml-front-matter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>commonmark-parent</artifactId>
<groupId>org.commonmark</groupId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-ext-yaml-front-matter</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-integration-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-integration-test</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark-test-util/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark-test-util</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion commonmark/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</parent>

<artifactId>commonmark</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class LinkReferenceDefinitionParser {
private String destination;
private char titleDelimiter;
private StringBuilder title;
private int titleSourceSpanStart = -1;
private boolean referenceValid = false;

public void parse(SourceLine line) {
Expand Down Expand Up @@ -226,6 +227,7 @@ private boolean startTitle(Scanner scanner) {

if (titleDelimiter != '\0') {
state = State.TITLE;
titleSourceSpanStart = sourceSpans.size();
title = new StringBuilder();
scanner.next();
if (!scanner.hasNext()) {
Expand Down Expand Up @@ -277,17 +279,28 @@ private void finishReference() {
return;
}

boolean incompleteTitle = state == State.TITLE;
String d = Escaping.unescapeString(destination);
String t = title != null ? Escaping.unescapeString(title.toString()) : null;
String t =
!incompleteTitle && title != null
? Escaping.unescapeString(title.toString())
: null;
LinkReferenceDefinition definition = new LinkReferenceDefinition(label.toString(), d, t);
definition.setSourceSpans(sourceSpans);
sourceSpans.clear();
if (incompleteTitle) {
definition.setSourceSpans(
new ArrayList<>(sourceSpans.subList(0, titleSourceSpanStart)));
sourceSpans.subList(0, titleSourceSpanStart).clear();
} else {
definition.setSourceSpans(sourceSpans);
sourceSpans.clear();
}
definitions.add(definition);

label = null;
referenceValid = false;
destination = null;
title = null;
titleSourceSpanStart = -1;
}

private static <T> void removeLast(int n, List<T> list) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import org.commonmark.internal.LinkReferenceDefinitionParser.State;
import org.commonmark.node.LinkReferenceDefinition;
import org.commonmark.node.SourceSpan;
import org.commonmark.parser.SourceLine;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -169,6 +170,25 @@ void testTitleMultiline4() {
assertDef(parser.getDefinitions().get(0), "foo", "/url", null);
}

@Test
void testUnclosedMultilineTitleKeepsParagraphSourceSpans() {
SourceSpan definitionSpan = SourceSpan.of(0, 0, 0, 11);
SourceSpan paragraphSpan = SourceSpan.of(1, 0, 12, 14);

parse("[foo]: /url");
parser.addSourceSpan(definitionSpan);
parse("(partial title");
parser.addSourceSpan(paragraphSpan);

var definitions = parser.getDefinitions();

assertThat(definitions).hasSize(1);
assertDef(definitions.get(0), "foo", "/url", null);
assertThat(definitions.get(0).getSourceSpans()).containsExactly(definitionSpan);
assertThat(parser.getParagraphLines().getContent()).isEqualTo("(partial title");
assertThat(parser.getParagraphSourceSpans()).containsExactly(paragraphSpan);
}

@Test
void testTitleInvalid() {
assertParagraph("[foo]: /url (invalid(");
Expand Down
26 changes: 13 additions & 13 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>org.commonmark</groupId>
<artifactId>commonmark-parent</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
<name>commonmark-java parent</name>
<description>
Java implementation of CommonMark, a specification of the Markdown format for turning plain text into formatted
Expand Down Expand Up @@ -146,62 +146,62 @@
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-autolink</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-footnotes</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-image-attributes</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-ins</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-gfm-alerts</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-gfm-strikethrough</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-heading-anchor</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-task-list-items</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-ext-yaml-front-matter</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.commonmark</groupId>
<artifactId>commonmark-test-util</artifactId>
<version>0.30.1-SNAPSHOT</version>
<version>0.30.2-SNAPSHOT</version>
</dependency>

<!-- Common test dependencies -->
Expand Down