Sha256: 371b98733ff7f5f8222b9bd7343af676b7bad3f2c8b89fe4f9ac53fbb768e410
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
#include "whitelist.h" #include <parser.h> static const char *whitelist[] = { "template", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "br", "b", "i", "strong", "em", "a", "pre", "code", "img", "tt", "div", "ins", "del", "sup", "sub", "p", "ol", "ul", "table", "thead", "tbody", "tfoot", "blockquote", "dl", "dt", "dd", "kbd", "q", "samp", "var", "hr", "ruby", "rt", "rp", "li", "tr", "td", "th", "s", "strike", "summary", "details", NULL, }; static int is_tag(const unsigned char *tag_data, size_t tag_size, const char *tagname) { size_t i; if (tag_size < 3 || tag_data[0] != '<') return 0; i = 1; if (tag_data[i] == '/') { i++; } for (; i < tag_size; ++i, ++tagname) { if (*tagname == 0) break; if (tag_data[i] != *tagname) return 0; } if (i == tag_size) return 0; if (cmark_isspace(tag_data[i]) || tag_data[i] == '>') return 1; return 0; } static int filter(cmark_syntax_extension *ext, const unsigned char *tag, size_t tag_len) { const char **it; for (it = whitelist; *it; ++it) { if (is_tag(tag, tag_len, *it)) { return 1; } } return 0; } cmark_syntax_extension *create_whitelist_extension(void) { cmark_syntax_extension *ext = cmark_syntax_extension_new("whitelist"); cmark_syntax_extension_set_html_filter_func(ext, filter); return ext; }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
commonmarker-0.11.0 | ext/commonmarker/cmark/extensions/whitelist.c |