Add rules

This commit is contained in:
Wilson Lin 2018-07-02 21:21:22 +12:00
parent d88d3ada69
commit 2b11b4da9e
4 changed files with 2359 additions and 0 deletions

2065
src/main/c/rule/entityrefs.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
#ifndef _HDR_HYPERBUILD_RULE_INLINETAGS
#define _HDR_HYPERBUILD_RULE_INLINETAGS
#include "../ext/khash.h"
const char *hb_r_inlinetags_raw[] = {
"a",
"abbr",
"b",
"bdi",
"bdo",
"br",
"cite",
"code",
"data",
"dfn",
"em",
"i",
"kbd",
"mark",
"q",
"rp",
"rt",
"rtc",
"ruby",
"s",
"samp",
"small",
"span",
"strong",
"sub",
"sup",
"time",
"tt",
"u",
"var",
"wbr",
};
KHASH_SET_INIT_STR(hb_r_inlinetags)
static khash_t(hb_r_inlinetags) *hb_r_inlinetags_h;
static void hb_r_inlinetags_init() {
hb_r_inlinetags_h = kh_init(hb_r_inlinetags);
int rv;
for (int i = 0; i < sizeof(hb_r_inlinetags_raw) / sizeof(hb_r_inlinetags_raw[0]); i++) {
kh_put(hb_r_inlinetags, hb_r_inlinetags_h, hb_r_inlinetags_raw[i], &rv);
}
}
int hb_r_inlinetags_check(char *tag) {
khint_t k = kh_get(hb_r_inlinetags, hb_r_inlinetags_h, tag);
return k != kh_end(hb_r_inlinetags_h);
}
void hb_r_inlinetags_init() {
hb_r_inlinetags_init();
}
#endif // _HDR_HYPERBUILD_RULE_INLINETAGS

184
src/main/c/rule/tags.c Normal file
View File

@ -0,0 +1,184 @@
#ifndef _HDR_HYPERBUILD_RULE_TAGS
#define _HDR_HYPERBUILD_RULE_TAGS
#include "../ext/khash.h"
// Sourced from https://developer.mozilla.org/en-US/docs/Web/HTML/Element at 2018-07-01T05:55:00Z
const char *hb_r_tags_raw[] = {
"html",
"link",
"meta",
"style",
"title",
"body",
"address",
"article",
"aside",
"footer",
"header",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"hgroup",
"nav",
"section",
"blockquote",
"dd",
"dir",
"div",
"dl",
"dt",
"figcaption",
"figure",
"hr",
"li",
"main",
"ol",
"p",
"pre",
"ul",
"a",
"abbr",
"b",
"bdi",
"bdo",
"br",
"cite",
"code",
"data",
"dfn",
"em",
"i",
"kbd",
"mark",
"q",
"rp",
"rt",
"rtc",
"ruby",
"s",
"samp",
"small",
"span",
"strong",
"sub",
"sup",
"time",
"tt",
"u",
"var",
"wbr",
"area",
"audio",
"img",
"map",
"track",
"video",
"applet",
"embed",
"iframe",
"noembed",
"object",
"param",
"picture",
"source",
"canvas",
"noscript",
"script",
"del",
"ins",
"caption",
"col",
"colgroup",
"table",
"tbody",
"td",
"tfoot",
"th",
"thead",
"tr",
"button",
"datalist",
"fieldset",
"form",
"input",
"label",
"legend",
"meter",
"optgroup",
"option",
"output",
"progress",
"select",
"textarea",
"details",
"dialog",
"menu",
"menuitem",
"summary",
"content",
"element",
"shadow",
"slot",
"template",
"acronym",
"applet",
"basefont",
"bgsound",
"big",
"blink",
"center",
"command",
"content",
"dir",
"element",
"font",
"frame",
"frameset",
"image",
"isindex",
"keygen",
"listing",
"marquee",
"menuitem",
"multicol",
"nextid",
"nobr",
"noembed",
"noframes",
"plaintext",
"shadow",
"spacer",
"strike",
"tt",
"xmp",
};
KHASH_SET_INIT_STR(hb_r_tags)
static khash_t(hb_r_tags) *hb_r_tags_h;
static void hb_r_tags_init() {
hb_r_tags_h = kh_init(hb_r_tags);
int rv;
for (int i = 0; i < sizeof(hb_r_tags_raw) / sizeof(hb_r_tags_raw[0]); i++) {
kh_put(hb_r_tags, hb_r_tags_h, hb_r_tags_raw[i], &rv);
}
}
int hb_r_tags_check(char *tag) {
khint_t k = kh_get(hb_r_tags, hb_r_tags_h, tag);
return k != kh_end(hb_r_tags_h);
}
void hb_r_tags_init() {
hb_r_tags_init();
}
#endif // _HDR_HYPERBUILD_RULE_TAGS

View File

@ -0,0 +1,47 @@
#ifndef _HDR_HYPERBUILD_RULE_VOIDTAGS
#define _HDR_HYPERBUILD_RULE_VOIDTAGS
#include "../ext/khash.h"
const char *hb_r_voidtags_raw[] = {
"area",
"base",
"br",
"col",
"embed",
"hr",
"img",
"input",
"keygen",
"link",
"meta",
"param",
"source",
"track",
"wbr",
};
KHASH_SET_INIT_STR(hb_r_voidtags)
static khash_t(hb_r_voidtags) *hb_r_voidtags_h;
static void hb_r_voidtags_init() {
hb_r_voidtags_h = kh_init(hb_r_voidtags);
int rv;
for (int i = 0; i < sizeof(hb_r_voidtags_raw) / sizeof(hb_r_voidtags_raw[0]); i++) {
kh_put(hb_r_voidtags, hb_r_voidtags_h, hb_r_voidtags_raw[i], &rv);
}
}
int hb_r_voidtags_check(char *tag) {
khint_t k = kh_get(hb_r_voidtags, hb_r_voidtags_h, tag);
return k != kh_end(hb_r_voidtags_h);
}
void hb_r_voidtags_init() {
hb_r_voidtags_init();
}
#endif // _HDR_HYPERBUILD_RULE_VOIDTAGS