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;