diff options
-rw-r--r-- | src/content-parser.c | 12 | ||||
-rw-r--r-- | tests/check_content_parser.c | 14 |
2 files changed, 22 insertions, 4 deletions
diff --git a/src/content-parser.c b/src/content-parser.c index ccb96ef..a334d28 100644 --- a/src/content-parser.c +++ b/src/content-parser.c @@ -231,11 +231,15 @@ blogc_content_parse_inline(const char *src) break; case '!': - if (state == LINK_CLOSED && (open_code || open_code_double)) { - b_string_append_c(rv, c); - break; - } if (state == LINK_CLOSED) { + if (open_code || open_code_double) { + b_string_append_c(rv, c); + break; + } + if (!is_last && src[current + 1] != '[') { + b_string_append_c(rv, c); + break; + } state = LINK_IMAGE; is_image = true; start_state = current; diff --git a/tests/check_content_parser.c b/tests/check_content_parser.c index 970ec5c..e8e412a 100644 --- a/tests/check_content_parser.c +++ b/tests/check_content_parser.c @@ -1360,6 +1360,10 @@ test_content_parse_inline(void **state) assert_non_null(html); assert_string_equal(html, "<em>bola</em>"); free(html); + html = blogc_content_parse_inline("bola!"); + assert_non_null(html); + assert_string_equal(html, "bola!"); + free(html); } @@ -1475,6 +1479,10 @@ test_content_parse_inline_link(void **state) assert_non_null(html); assert_string_equal(html, "<a href=\"http://example.org/\">bola</a>\n"); free(html); + html = blogc_content_parse_inline("[bola!](http://example.org/)\n"); + assert_non_null(html); + assert_string_equal(html, "<a href=\"http://example.org/\">bola!</a>\n"); + free(html); html = blogc_content_parse_inline("[bola]\n(http://example.org/)\n"); assert_non_null(html); assert_string_equal(html, "<a href=\"http://example.org/\">bola</a>\n"); @@ -1491,6 +1499,12 @@ test_content_parse_inline_link(void **state) 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"); + assert_non_null(html); + assert_string_equal(html, "test suite!)\n" + "depends on <a href=\"http://cmocka.org/\">cmocka</a>, though.\n"); + free(html); // "invalid" html = blogc_content_parse_inline("[bola](\nhttp://example.org/)\n"); assert_non_null(html); |