Skip to content

Commit 599a160

Browse files
committed
commonmark writer: use ~~~ fences if info string contains backtick.
This is needed for round-trip tests.
1 parent 289a0aa commit 599a160

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/commonmark.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
171171
int i;
172172
bool entering = (ev_type == CMARK_EVENT_ENTER);
173173
const char *info, *code, *title;
174+
char fencechar[2] = {'\0', '\0'};
174175
size_t info_len, code_len;
175176
char listmarker[LISTMARKER_SIZE];
176177
char *emph_delim;
@@ -278,6 +279,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
278279
}
279280
info = cmark_node_get_fence_info(node);
280281
info_len = strlen(info);
282+
fencechar[0] = strchr(info, '`') == NULL ? '`' : '~';
281283
code = cmark_node_get_literal(node);
282284
code_len = strlen(code);
283285
// use indented form if no info, and code doesn't
@@ -297,15 +299,15 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
297299
numticks = 3;
298300
}
299301
for (i = 0; i < numticks; i++) {
300-
LIT("`");
302+
LIT(fencechar);
301303
}
302304
LIT(" ");
303305
OUT(info, false, LITERAL);
304306
CR();
305307
OUT(cmark_node_get_literal(node), false, LITERAL);
306308
CR();
307309
for (i = 0; i < numticks; i++) {
308-
LIT("`");
310+
LIT(fencechar);
309311
}
310312
}
311313
BLANKLINE();

0 commit comments

Comments
 (0)