diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2019-02-24 23:12:40 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2019-02-24 23:12:40 +0100 |
commit | 699f4b4032431fbd7f4fbf13fe9e2b085225b215 (patch) | |
tree | 3a8b605f56a4c05384abd21d6e58e7017f55ed7e | |
parent | 2ae2d648ab0bd5340ca1342c97d704b2d4ce948c (diff) | |
download | blogc-699f4b4032431fbd7f4fbf13fe9e2b085225b215.tar.gz blogc-699f4b4032431fbd7f4fbf13fe9e2b085225b215.tar.bz2 blogc-699f4b4032431fbd7f4fbf13fe9e2b085225b215.zip |
blogc: content: do not escape inline code
this is more compatible with markdown spec[1]
[1] https://daringfireball.net/projects/markdown/syntax#code
-rw-r--r-- | man/blogc-source.7.ronn | 3 | ||||
-rw-r--r-- | src/blogc/content-parser.c | 4 | ||||
-rw-r--r-- | tests/blogc/check_content_parser.c | 14 |
3 files changed, 16 insertions, 5 deletions
diff --git a/man/blogc-source.7.ronn b/man/blogc-source.7.ronn index 06f2f20..56fa552 100644 --- a/man/blogc-source.7.ronn +++ b/man/blogc-source.7.ronn @@ -219,6 +219,9 @@ Code is defined with 1 or 2 '`' before and after the text. This is inline code: `code` This is inline code: ``code`` +The later form is particularly useful when a '`' is part of the code, because +escaping delimiters with '\' is not possible. + ### Images Images are defined using the following syntax: diff --git a/src/blogc/content-parser.c b/src/blogc/content-parser.c index d295a2c..047af4b 100644 --- a/src/blogc/content-parser.c +++ b/src/blogc/content-parser.c @@ -347,7 +347,7 @@ blogc_content_parse_inline_internal(const char *src, size_t src_len) free(tmp3); tmp3 = NULL; bc_string_append(rv, "<code>"); - bc_string_append_escaped(rv, tmp2); + bc_string_append(rv, tmp2); bc_string_append(rv, "</code>"); current = tmp - src; tmp = NULL; @@ -376,7 +376,7 @@ blogc_content_parse_inline_internal(const char *src, size_t src_len) free(tmp3); tmp3 = NULL; bc_string_append(rv, "<code>"); - bc_string_append_escaped(rv, tmp2); + bc_string_append(rv, tmp2); bc_string_append(rv, "</code>"); current = tmp - src + 1; tmp = NULL; diff --git a/tests/blogc/check_content_parser.c b/tests/blogc/check_content_parser.c index cd8ba57..de15bac 100644 --- a/tests/blogc/check_content_parser.c +++ b/tests/blogc/check_content_parser.c @@ -1951,11 +1951,15 @@ test_content_parse_inline_code(void **state) free(html); html = blogc_content_parse_inline("`bo\\`\\`la`\n"); assert_non_null(html); - assert_string_equal(html, "<code>bo``la</code>\n"); + assert_string_equal(html, "<code>bo\\`\\`la</code>\n"); free(html); html = blogc_content_parse_inline("``bo\\`\\`la``\n"); assert_non_null(html); - assert_string_equal(html, "<code>bo``la</code>\n"); + assert_string_equal(html, "<code>bo\\`\\`la</code>\n"); + free(html); + html = blogc_content_parse_inline("``bo`la``\n"); + assert_non_null(html); + assert_string_equal(html, "<code>bo`la</code>\n"); free(html); html = blogc_content_parse_inline("``bola\n"); assert_non_null(html); @@ -2009,7 +2013,11 @@ test_content_parse_inline_link(void **state) free(html); html = blogc_content_parse_inline("[``bola(2)[3]**!\\```](http://example.org/)\n"); assert_non_null(html); - assert_string_equal(html, "<a href=\"http://example.org/\"><code>bola(2)[3]**!`</code></a>\n"); + assert_string_equal(html, "<a href=\"http://example.org/\"><code>bola(2)[3]**!\\`</code></a>\n"); + free(html); + html = blogc_content_parse_inline("[``bola(2)[3]**!```](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "<a href=\"http://example.org/\"><code>bola(2)[3]**!</code>`</a>\n"); free(html); html = blogc_content_parse_inline("test suite!)\n" "depends on [cmocka](http://cmocka.org/), though.\n"); |