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 cd9ffb5..bde6222 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -788,6 +788,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 71c634b..7b7001e 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. + */ +#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');      } | 
