ext/redcarpet/markdown.c in redcarpet-3.3.4 vs ext/redcarpet/markdown.c in redcarpet-3.4.0

- old
+ new

@@ -90,11 +90,10 @@ typedef size_t (*char_trigger)(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_emphasis(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_underline(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); -static size_t char_highlight(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_quote(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_linebreak(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_codespan(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_escape(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); static size_t char_entity(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size); @@ -611,11 +610,11 @@ if (i >= size) return 0; if (data[i] == c && !_isspace(data[i - 1])) { if (rndr->ext_flags & MKDEXT_NO_INTRA_EMPHASIS) { - if (i + i < size && _isalnum(data[i + 1])) + if (i + 1 < size && _isalnum(data[i + 1])) continue; } work = rndr_newbuf(rndr, BUFFER_SPAN); parse_inline(work, rndr, data, i); @@ -843,11 +842,10 @@ } return end; } - /* char_escape • '\\' backslash escape */ static size_t char_escape(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size) { static const char *escape_chars = "\\`*_{}[]()#+-.!:|&<>^~="; @@ -2337,11 +2335,11 @@ i++; if (i < under_end && data[i] != '|' && data[i] != '+') break; - if (dashes < 3) + if (dashes < 1) break; i++; } @@ -2755,14 +2753,17 @@ memset(md->active_char, 0x0, 256); if (md->cb.emphasis || md->cb.double_emphasis || md->cb.triple_emphasis) { md->active_char['*'] = MD_CHAR_EMPHASIS; md->active_char['_'] = MD_CHAR_EMPHASIS; + if (extensions & MKDEXT_STRIKETHROUGH) md->active_char['~'] = MD_CHAR_EMPHASIS; if (extensions & MKDEXT_HIGHLIGHT) md->active_char['='] = MD_CHAR_EMPHASIS; + if (extensions & MKDEXT_QUOTE) + md->active_char['"'] = MD_CHAR_QUOTE; } if (md->cb.codespan) md->active_char['`'] = MD_CHAR_CODESPAN; @@ -2782,12 +2783,9 @@ md->active_char['w'] = MD_CHAR_AUTOLINK_WWW; } if (extensions & MKDEXT_SUPERSCRIPT) md->active_char['^'] = MD_CHAR_SUPERSCRIPT; - - if (extensions & MKDEXT_QUOTE) - md->active_char['"'] = MD_CHAR_QUOTE; /* Extension data */ md->ext_flags = extensions; md->opaque = opaque; md->max_nesting = max_nesting;