diff options
Diffstat (limited to 'html/html.c')
-rw-r--r-- | html/html.c | 182 |
1 files changed, 91 insertions, 91 deletions
diff --git a/html/html.c b/html/html.c index 7f08ee8..a9c6660 100644 --- a/html/html.c +++ b/html/html.c @@ -28,7 +28,7 @@ #define USE_XHTML(opt) (opt->flags & HTML_USE_XHTML) int -sdhtml_is_tag(const uint8_t *tag_data, size_t tag_size, const char *tagname) +sd_html_is_tag(const uint8_t *tag_data, size_t tag_size, const char *tagname) { size_t i; int closed = 0; @@ -60,23 +60,23 @@ sdhtml_is_tag(const uint8_t *tag_data, size_t tag_size, const char *tagname) return HTML_TAG_NONE; } -static inline void escape_html(struct buf *ob, const uint8_t *source, size_t length) +static inline void escape_html(struct sd_buf *ob, const uint8_t *source, size_t length) { - houdini_escape_html0(ob, source, length, 0); + sd_houdini_escape_html0(ob, source, length, 0); } -static inline void escape_href(struct buf *ob, const uint8_t *source, size_t length) +static inline void escape_href(struct sd_buf *ob, const uint8_t *source, size_t length) { - houdini_escape_href(ob, source, length); + sd_houdini_escape_href(ob, source, length); } /******************** * GENERIC RENDERER * ********************/ static int -rndr_autolink(struct buf *ob, const struct buf *link, enum mkd_autolink type, void *opaque) +rndr_autolink(struct sd_buf *ob, const struct sd_buf *link, enum sd_mkd_autolink type, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; if (!link || !link->size) return 0; @@ -92,9 +92,9 @@ rndr_autolink(struct buf *ob, const struct buf *link, enum mkd_autolink type, vo escape_href(ob, link->data, link->size); if (options->link_attributes) { - bufputc(ob, '\"'); + sd_bufputc(ob, '\"'); options->link_attributes(ob, link, opaque); - bufputc(ob, '>'); + sd_bufputc(ob, '>'); } else { BUFPUTSL(ob, "\">"); } @@ -104,7 +104,7 @@ rndr_autolink(struct buf *ob, const struct buf *link, enum mkd_autolink type, vo * an actual URI, e.g. `mailto:foo@bar.com`, we don't * want to print the `mailto:` prefix */ - if (bufprefix(link, "mailto:") == 0) { + if (sd_bufprefix(link, "mailto:") == 0) { escape_html(ob, link->data + 7, link->size - 7); } else { escape_html(ob, link->data, link->size); @@ -116,9 +116,9 @@ rndr_autolink(struct buf *ob, const struct buf *link, enum mkd_autolink type, vo } static void -rndr_blockcode(struct buf *ob, const struct buf *text, const struct buf *lang, void *opaque) +rndr_blockcode(struct sd_buf *ob, const struct sd_buf *text, const struct sd_buf *lang, void *opaque) { - if (ob->size) bufputc(ob, '\n'); + if (ob->size) sd_bufputc(ob, '\n'); if (lang && lang->size) { size_t i, cls; @@ -136,7 +136,7 @@ rndr_blockcode(struct buf *ob, const struct buf *text, const struct buf *lang, v if (lang->data[org] == '.') org++; - if (cls) bufputc(ob, ' '); + if (cls) sd_bufputc(ob, ' '); escape_html(ob, lang->data + org, i - org); } } @@ -152,16 +152,16 @@ rndr_blockcode(struct buf *ob, const struct buf *text, const struct buf *lang, v } static void -rndr_blockquote(struct buf *ob, const struct buf *text, void *opaque) +rndr_blockquote(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { - if (ob->size) bufputc(ob, '\n'); + if (ob->size) sd_bufputc(ob, '\n'); BUFPUTSL(ob, "<blockquote>\n"); - if (text) bufput(ob, text->data, text->size); + if (text) sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</blockquote>\n"); } static int -rndr_codespan(struct buf *ob, const struct buf *text, void *opaque) +rndr_codespan(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { BUFPUTSL(ob, "<code>"); if (text) escape_html(ob, text->data, text->size); @@ -170,69 +170,69 @@ rndr_codespan(struct buf *ob, const struct buf *text, void *opaque) } static int -rndr_strikethrough(struct buf *ob, const struct buf *text, void *opaque) +rndr_strikethrough(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (!text || !text->size) return 0; BUFPUTSL(ob, "<del>"); - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</del>"); return 1; } static int -rndr_double_emphasis(struct buf *ob, const struct buf *text, void *opaque) +rndr_double_emphasis(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (!text || !text->size) return 0; BUFPUTSL(ob, "<strong>"); - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</strong>"); return 1; } static int -rndr_emphasis(struct buf *ob, const struct buf *text, void *opaque) +rndr_emphasis(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (!text || !text->size) return 0; BUFPUTSL(ob, "<em>"); - if (text) bufput(ob, text->data, text->size); + if (text) sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</em>"); return 1; } static int -rndr_linebreak(struct buf *ob, void *opaque) +rndr_linebreak(struct sd_buf *ob, void *opaque) { - struct html_renderopt *options = opaque; - bufputs(ob, USE_XHTML(options) ? "<br/>\n" : "<br>\n"); + struct sd_html_renderopt *options = opaque; + sd_bufputs(ob, USE_XHTML(options) ? "<br/>\n" : "<br>\n"); return 1; } static void -rndr_header(struct buf *ob, const struct buf *text, int level, void *opaque) +rndr_header(struct sd_buf *ob, const struct sd_buf *text, int level, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; if (ob->size) - bufputc(ob, '\n'); + sd_bufputc(ob, '\n'); if (options->flags & HTML_TOC) - bufprintf(ob, "<h%d id=\"toc_%d\">", level, options->toc_data.header_count++); + sd_bufprintf(ob, "<h%d id=\"toc_%d\">", level, options->toc_data.header_count++); else - bufprintf(ob, "<h%d>", level); + sd_bufprintf(ob, "<h%d>", level); - if (text) bufput(ob, text->data, text->size); - bufprintf(ob, "</h%d>\n", level); + if (text) sd_bufput(ob, text->data, text->size); + sd_bufprintf(ob, "</h%d>\n", level); } static int -rndr_link(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *content, void *opaque) +rndr_link(struct sd_buf *ob, const struct sd_buf *link, const struct sd_buf *title, const struct sd_buf *content, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; if (link != NULL && (options->flags & HTML_SAFELINK) != 0 && !sd_autolink_issafe(link->data, link->size)) return 0; @@ -248,29 +248,29 @@ rndr_link(struct buf *ob, const struct buf *link, const struct buf *title, const } if (options->link_attributes) { - bufputc(ob, '\"'); + sd_bufputc(ob, '\"'); options->link_attributes(ob, link, opaque); - bufputc(ob, '>'); + sd_bufputc(ob, '>'); } else { BUFPUTSL(ob, "\">"); } - if (content && content->size) bufput(ob, content->data, content->size); + if (content && content->size) sd_bufput(ob, content->data, content->size); BUFPUTSL(ob, "</a>"); return 1; } static void -rndr_list(struct buf *ob, const struct buf *text, int flags, void *opaque) +rndr_list(struct sd_buf *ob, const struct sd_buf *text, int flags, void *opaque) { - if (ob->size) bufputc(ob, '\n'); - bufput(ob, flags & MKD_LIST_ORDERED ? "<ol>\n" : "<ul>\n", 5); - if (text) bufput(ob, text->data, text->size); - bufput(ob, flags & MKD_LIST_ORDERED ? "</ol>\n" : "</ul>\n", 6); + if (ob->size) sd_bufputc(ob, '\n'); + sd_bufput(ob, flags & MKD_LIST_ORDERED ? "<ol>\n" : "<ul>\n", 5); + if (text) sd_bufput(ob, text->data, text->size); + sd_bufput(ob, flags & MKD_LIST_ORDERED ? "</ol>\n" : "</ul>\n", 6); } static void -rndr_listitem(struct buf *ob, const struct buf *text, int flags, void *opaque) +rndr_listitem(struct sd_buf *ob, const struct sd_buf *text, int flags, void *opaque) { BUFPUTSL(ob, "<li>"); if (text) { @@ -278,18 +278,18 @@ rndr_listitem(struct buf *ob, const struct buf *text, int flags, void *opaque) while (size && text->data[size - 1] == '\n') size--; - bufput(ob, text->data, size); + sd_bufput(ob, text->data, size); } BUFPUTSL(ob, "</li>\n"); } static void -rndr_paragraph(struct buf *ob, const struct buf *text, void *opaque) +rndr_paragraph(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; size_t i = 0; - if (ob->size) bufputc(ob, '\n'); + if (ob->size) sd_bufputc(ob, '\n'); if (!text || !text->size) return; @@ -308,7 +308,7 @@ rndr_paragraph(struct buf *ob, const struct buf *text, void *opaque) i++; if (i > org) - bufput(ob, text->data + org, i - org); + sd_bufput(ob, text->data + org, i - org); /* * do not insert a line break if this newline @@ -321,13 +321,13 @@ rndr_paragraph(struct buf *ob, const struct buf *text, void *opaque) i++; } } else { - bufput(ob, &text->data[i], text->size - i); + sd_bufput(ob, &text->data[i], text->size - i); } BUFPUTSL(ob, "</p>\n"); } static void -rndr_raw_block(struct buf *ob, const struct buf *text, void *opaque) +rndr_raw_block(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { size_t org, sz; if (!text) return; @@ -336,33 +336,33 @@ rndr_raw_block(struct buf *ob, const struct buf *text, void *opaque) org = 0; while (org < sz && text->data[org] == '\n') org++; if (org >= sz) return; - if (ob->size) bufputc(ob, '\n'); - bufput(ob, text->data + org, sz - org); - bufputc(ob, '\n'); + if (ob->size) sd_bufputc(ob, '\n'); + sd_bufput(ob, text->data + org, sz - org); + sd_bufputc(ob, '\n'); } static int -rndr_triple_emphasis(struct buf *ob, const struct buf *text, void *opaque) +rndr_triple_emphasis(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (!text || !text->size) return 0; BUFPUTSL(ob, "<strong><em>"); - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</em></strong>"); return 1; } static void -rndr_hrule(struct buf *ob, void *opaque) +rndr_hrule(struct sd_buf *ob, void *opaque) { - struct html_renderopt *options = opaque; - if (ob->size) bufputc(ob, '\n'); - bufputs(ob, USE_XHTML(options) ? "<hr/>\n" : "<hr>\n"); + struct sd_html_renderopt *options = opaque; + if (ob->size) sd_bufputc(ob, '\n'); + sd_bufputs(ob, USE_XHTML(options) ? "<hr/>\n" : "<hr>\n"); } static int -rndr_image(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *alt, void *opaque) +rndr_image(struct sd_buf *ob, const struct sd_buf *link, const struct sd_buf *title, const struct sd_buf *alt, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; if (!link || !link->size) return 0; BUFPUTSL(ob, "<img src=\""); @@ -376,14 +376,14 @@ rndr_image(struct buf *ob, const struct buf *link, const struct buf *title, cons BUFPUTSL(ob, "\" title=\""); escape_html(ob, title->data, title->size); } - bufputs(ob, USE_XHTML(options) ? "\"/>" : "\">"); + sd_bufputs(ob, USE_XHTML(options) ? "\"/>" : "\">"); return 1; } static int -rndr_raw_html(struct buf *ob, const struct buf *text, void *opaque) +rndr_raw_html(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; /* HTML_ESCAPE overrides SKIP_HTML, SKIP_STYLE, SKIP_LINKS and SKIP_IMAGES * It doens't see if there are any valid tags, just escape all of them. */ @@ -396,45 +396,45 @@ rndr_raw_html(struct buf *ob, const struct buf *text, void *opaque) return 1; if ((options->flags & HTML_SKIP_STYLE) != 0 && - sdhtml_is_tag(text->data, text->size, "style")) + sd_html_is_tag(text->data, text->size, "style")) return 1; if ((options->flags & HTML_SKIP_LINKS) != 0 && - sdhtml_is_tag(text->data, text->size, "a")) + sd_html_is_tag(text->data, text->size, "a")) return 1; if ((options->flags & HTML_SKIP_IMAGES) != 0 && - sdhtml_is_tag(text->data, text->size, "img")) + sd_html_is_tag(text->data, text->size, "img")) return 1; - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); return 1; } static void -rndr_table(struct buf *ob, const struct buf *header, const struct buf *body, void *opaque) +rndr_table(struct sd_buf *ob, const struct sd_buf *header, const struct sd_buf *body, void *opaque) { - if (ob->size) bufputc(ob, '\n'); + if (ob->size) sd_bufputc(ob, '\n'); BUFPUTSL(ob, "<table><thead>\n"); if (header) - bufput(ob, header->data, header->size); + sd_bufput(ob, header->data, header->size); BUFPUTSL(ob, "</thead><tbody>\n"); if (body) - bufput(ob, body->data, body->size); + sd_bufput(ob, body->data, body->size); BUFPUTSL(ob, "</tbody></table>\n"); } static void -rndr_tablerow(struct buf *ob, const struct buf *text, void *opaque) +rndr_tablerow(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { BUFPUTSL(ob, "<tr>\n"); if (text) - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</tr>\n"); } static void -rndr_tablecell(struct buf *ob, const struct buf *text, int flags, void *opaque) +rndr_tablecell(struct sd_buf *ob, const struct sd_buf *text, int flags, void *opaque) { if (flags & MKD_TABLE_HEADER) { BUFPUTSL(ob, "<th"); @@ -460,7 +460,7 @@ rndr_tablecell(struct buf *ob, const struct buf *text, int flags, void *opaque) } if (text) - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); if (flags & MKD_TABLE_HEADER) { BUFPUTSL(ob, "</th>\n"); @@ -470,26 +470,26 @@ rndr_tablecell(struct buf *ob, const struct buf *text, int flags, void *opaque) } static int -rndr_superscript(struct buf *ob, const struct buf *text, void *opaque) +rndr_superscript(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (!text || !text->size) return 0; BUFPUTSL(ob, "<sup>"); - bufput(ob, text->data, text->size); + sd_bufput(ob, text->data, text->size); BUFPUTSL(ob, "</sup>"); return 1; } static void -rndr_normal_text(struct buf *ob, const struct buf *text, void *opaque) +rndr_normal_text(struct sd_buf *ob, const struct sd_buf *text, void *opaque) { if (text) escape_html(ob, text->data, text->size); } static void -toc_header(struct buf *ob, const struct buf *text, int level, void *opaque) +toc_header(struct sd_buf *ob, const struct sd_buf *text, int level, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; /* set the level offset if this is the first header * we're parsing for the document */ @@ -514,24 +514,24 @@ toc_header(struct buf *ob, const struct buf *text, int level, void *opaque) BUFPUTSL(ob,"</li>\n<li>\n"); } - bufprintf(ob, "<a href=\"#toc_%d\">", options->toc_data.header_count++); + sd_bufprintf(ob, "<a href=\"#toc_%d\">", options->toc_data.header_count++); if (text) escape_html(ob, text->data, text->size); BUFPUTSL(ob, "</a>\n"); } static int -toc_link(struct buf *ob, const struct buf *link, const struct buf *title, const struct buf *content, void *opaque) +toc_link(struct sd_buf *ob, const struct sd_buf *link, const struct sd_buf *title, const struct sd_buf *content, void *opaque) { if (content && content->size) - bufput(ob, content->data, content->size); + sd_bufput(ob, content->data, content->size); return 1; } static void -toc_finalize(struct buf *ob, void *opaque) +toc_finalize(struct sd_buf *ob, void *opaque) { - struct html_renderopt *options = opaque; + struct sd_html_renderopt *options = opaque; while (options->toc_data.current_level > 0) { BUFPUTSL(ob, "</li>\n</ul>\n"); @@ -540,7 +540,7 @@ toc_finalize(struct buf *ob, void *opaque) } void -sdhtml_toc_renderer(struct sd_callbacks *callbacks, struct html_renderopt *options) +sd_html_toc_renderer(struct sd_callbacks *callbacks, struct sd_html_renderopt *options) { static const struct sd_callbacks cb_default = { NULL, @@ -574,14 +574,14 @@ sdhtml_toc_renderer(struct sd_callbacks *callbacks, struct html_renderopt *optio toc_finalize, }; - memset(options, 0x0, sizeof(struct html_renderopt)); + memset(options, 0x0, sizeof(struct sd_html_renderopt)); options->flags = HTML_TOC; memcpy(callbacks, &cb_default, sizeof(struct sd_callbacks)); } void -sdhtml_renderer(struct sd_callbacks *callbacks, struct html_renderopt *options, unsigned int render_flags) +sd_html_renderer(struct sd_callbacks *callbacks, struct sd_html_renderopt *options, unsigned int render_flags) { static const struct sd_callbacks cb_default = { rndr_blockcode, @@ -616,7 +616,7 @@ sdhtml_renderer(struct sd_callbacks *callbacks, struct html_renderopt *options, }; /* Prepare the options pointer */ - memset(options, 0x0, sizeof(struct html_renderopt)); + memset(options, 0x0, sizeof(struct sd_html_renderopt)); options->flags = render_flags; /* Prepare the callbacks */ |