|
|
@ -72,6 +72,7 @@ static size_t char_langle_tag(struct buf *ob, struct sd_markdown *rndr, uint8_t
|
|
|
|
static size_t char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_autolink_email(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_autolink_email(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_autolink_www(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_autolink_www(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
|
|
|
|
static size_t char_autolink_zet(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_superscript(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
static size_t char_superscript(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size);
|
|
|
|
|
|
|
|
|
|
|
@ -87,6 +88,7 @@ enum markdown_char_t {
|
|
|
|
MD_CHAR_AUTOLINK_URL,
|
|
|
|
MD_CHAR_AUTOLINK_URL,
|
|
|
|
MD_CHAR_AUTOLINK_EMAIL,
|
|
|
|
MD_CHAR_AUTOLINK_EMAIL,
|
|
|
|
MD_CHAR_AUTOLINK_WWW,
|
|
|
|
MD_CHAR_AUTOLINK_WWW,
|
|
|
|
|
|
|
|
MD_CHAR_AUTOLINK_ZET,
|
|
|
|
MD_CHAR_SUPERSCRIPT,
|
|
|
|
MD_CHAR_SUPERSCRIPT,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -102,6 +104,7 @@ static char_trigger markdown_char_ptrs[] = {
|
|
|
|
&char_autolink_url,
|
|
|
|
&char_autolink_url,
|
|
|
|
&char_autolink_email,
|
|
|
|
&char_autolink_email,
|
|
|
|
&char_autolink_www,
|
|
|
|
&char_autolink_www,
|
|
|
|
|
|
|
|
&char_autolink_zet,
|
|
|
|
&char_superscript,
|
|
|
|
&char_superscript,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -837,6 +840,26 @@ char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_
|
|
|
|
return link_len;
|
|
|
|
return link_len;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static size_t
|
|
|
|
|
|
|
|
char_autolink_zet(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
struct buf *link;
|
|
|
|
|
|
|
|
size_t link_len, rewind;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!rndr->cb.link || rndr->in_link_body)
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
link = rndr_newbuf(rndr, BUFFER_SPAN);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((link_len = sd_autolink__zet(&rewind, link, data, offset, size, 0)) > 0) {
|
|
|
|
|
|
|
|
ob->size -= rewind;
|
|
|
|
|
|
|
|
rndr->cb.autolink(ob, link, MKDA_ZET, rndr->opaque);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rndr_popbuf(rndr, BUFFER_SPAN);
|
|
|
|
|
|
|
|
return link_len;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* char_link • '[': parsing a link or an image */
|
|
|
|
/* char_link • '[': parsing a link or an image */
|
|
|
|
static size_t
|
|
|
|
static size_t
|
|
|
|
char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
|
|
|
|
char_link(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_t offset, size_t size)
|
|
|
@ -2439,6 +2462,7 @@ sd_markdown_new(
|
|
|
|
md->active_char[':'] = MD_CHAR_AUTOLINK_URL;
|
|
|
|
md->active_char[':'] = MD_CHAR_AUTOLINK_URL;
|
|
|
|
md->active_char['@'] = MD_CHAR_AUTOLINK_EMAIL;
|
|
|
|
md->active_char['@'] = MD_CHAR_AUTOLINK_EMAIL;
|
|
|
|
md->active_char['w'] = MD_CHAR_AUTOLINK_WWW;
|
|
|
|
md->active_char['w'] = MD_CHAR_AUTOLINK_WWW;
|
|
|
|
|
|
|
|
md->active_char[194] = MD_CHAR_AUTOLINK_ZET;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (extensions & MKDEXT_SUPERSCRIPT)
|
|
|
|
if (extensions & MKDEXT_SUPERSCRIPT)
|
|
|
|