Skip to content

Commit 26d4df9

Browse files
committed
Don't escape = text if it's the first node in a block
Fixes #335
1 parent e3795b2 commit 26d4df9

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

commonmark/src/main/java/org/commonmark/renderer/markdown/CoreMarkdownNodeRenderer.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,11 @@ public void visit(Text text) {
366366
break;
367367
}
368368
case '=': {
369-
// Would be ambiguous with a Setext heading, escape
370-
writer.raw("\\=");
371-
literal = literal.substring(1);
369+
// Would be ambiguous with a Setext heading, escape unless it's the first line in the block
370+
if (text.getPrevious() != null) {
371+
writer.raw("\\=");
372+
literal = literal.substring(1);
373+
}
372374
break;
373375
}
374376
case '0':

commonmark/src/test/java/org/commonmark/renderer/markdown/MarkdownRendererTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,9 @@ public void testEscaping() {
189189
assertRoundTrip("\\## Test\n");
190190
assertRoundTrip("\\#\n");
191191
assertRoundTrip("Foo\n\\===\n");
192+
// Only needs to be escaped after some text, not at beginning of paragraph
193+
assertRoundTrip("===\n");
194+
assertRoundTrip("a\n\n===\n");
192195
// The beginning of the line within the block, so disregarding prefixes
193196
assertRoundTrip("> \\- Test\n");
194197
assertRoundTrip("- \\- Test\n");

0 commit comments

Comments
 (0)