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); | 
