diff options
-rw-r--r-- | api_test/main.c | 5 | ||||
-rw-r--r-- | src/cmark.h | 4 | ||||
-rw-r--r-- | src/html.c | 2 |
3 files changed, 11 insertions, 0 deletions
diff --git a/api_test/main.c b/api_test/main.c index 8af2e71..8da9ba9 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -791,6 +791,11 @@ static void line_endings(test_batch_runner *runner) { STR_EQ(runner, html, "<p>line<br />\nline</p>\n", "crlf endings with CMARK_OPT_HARDBREAKS"); free(html); + html = cmark_markdown_to_html(crlf_lines, sizeof(crlf_lines) - 1, + CMARK_OPT_DEFAULT | CMARK_OPT_NOBREAKS); + STR_EQ(runner, html, "<p>line line</p>\n", + "crlf endings with CMARK_OPT_NOBREAKS"); + free(html); static const char no_line_ending[] = "```\nline\n```"; html = cmark_markdown_to_html(no_line_ending, sizeof(no_line_ending) - 1, diff --git a/src/cmark.h b/src/cmark.h index 3c5d6b6..c98e18e 100644 --- a/src/cmark.h +++ b/src/cmark.h @@ -519,6 +519,10 @@ char *cmark_render_latex(cmark_node *root, int options, int width); */ #define CMARK_OPT_SAFE (1 << 3) +/** Render `softbreak` elements as spaces (HTML only). + */ +#define CMARK_OPT_NOBREAKS (1 << 4) + /** * ### Options affecting parsing */ @@ -228,6 +228,8 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, case CMARK_NODE_SOFTBREAK: if (options & CMARK_OPT_HARDBREAKS) { cmark_strbuf_puts(html, "<br />\n"); + } else if (options & CMARK_OPT_NOBREAKS) { + cmark_strbuf_putc(html, ' '); } else { cmark_strbuf_putc(html, '\n'); } |