Update rules to use nicehash; add mapping for entity refs

This commit is contained in:
Wilson Lin 2018-07-02 21:58:33 +12:00
parent e15a5e76ab
commit 0ed528626d
5 changed files with 2267 additions and 2313 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,63 +1,46 @@
#ifndef _HDR_HYPERBUILD_RULE_INLINETAGS
#define _HDR_HYPERBUILD_RULE_INLINETAGS
#include "../ext/khash.h"
#include "../ext/nicehash/src/main/c/set/str.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",
};
static nh_set_str_t hb_r_inlinetags_set = nh_set_str_create();
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);
}
void hb_r_inlinetags_init() {
nh_set_str_add(hb_r_inlinetags_set, "a");
nh_set_str_add(hb_r_inlinetags_set, "abbr");
nh_set_str_add(hb_r_inlinetags_set, "b");
nh_set_str_add(hb_r_inlinetags_set, "bdi");
nh_set_str_add(hb_r_inlinetags_set, "bdo");
nh_set_str_add(hb_r_inlinetags_set, "br");
nh_set_str_add(hb_r_inlinetags_set, "cite");
nh_set_str_add(hb_r_inlinetags_set, "code");
nh_set_str_add(hb_r_inlinetags_set, "data");
nh_set_str_add(hb_r_inlinetags_set, "dfn");
nh_set_str_add(hb_r_inlinetags_set, "em");
nh_set_str_add(hb_r_inlinetags_set, "i");
nh_set_str_add(hb_r_inlinetags_set, "kbd");
nh_set_str_add(hb_r_inlinetags_set, "mark");
nh_set_str_add(hb_r_inlinetags_set, "q");
nh_set_str_add(hb_r_inlinetags_set, "rp");
nh_set_str_add(hb_r_inlinetags_set, "rt");
nh_set_str_add(hb_r_inlinetags_set, "rtc");
nh_set_str_add(hb_r_inlinetags_set, "ruby");
nh_set_str_add(hb_r_inlinetags_set, "s");
nh_set_str_add(hb_r_inlinetags_set, "samp");
nh_set_str_add(hb_r_inlinetags_set, "small");
nh_set_str_add(hb_r_inlinetags_set, "span");
nh_set_str_add(hb_r_inlinetags_set, "strong");
nh_set_str_add(hb_r_inlinetags_set, "sub");
nh_set_str_add(hb_r_inlinetags_set, "sup");
nh_set_str_add(hb_r_inlinetags_set, "time");
nh_set_str_add(hb_r_inlinetags_set, "tt");
nh_set_str_add(hb_r_inlinetags_set, "u");
nh_set_str_add(hb_r_inlinetags_set, "var");
nh_set_str_add(hb_r_inlinetags_set, "wbr");
}
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();
return nh_set_str_has(hb_r_inlinetags_set, tag);
}
#endif // _HDR_HYPERBUILD_RULE_INLINETAGS

View File

@ -1,184 +1,167 @@
#ifndef _HDR_HYPERBUILD_RULE_TAGS
#define _HDR_HYPERBUILD_RULE_TAGS
#include "../ext/khash.h"
#include "../ext/nicehash/src/main/c/set/str.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",
};
static nh_set_str_t hb_r_tags_set;
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);
}
void hb_r_tags_init() {
nh_set_str_add(hb_r_tags_set, "html");
nh_set_str_add(hb_r_tags_set, "link");
nh_set_str_add(hb_r_tags_set, "meta");
nh_set_str_add(hb_r_tags_set, "style");
nh_set_str_add(hb_r_tags_set, "title");
nh_set_str_add(hb_r_tags_set, "body");
nh_set_str_add(hb_r_tags_set, "address");
nh_set_str_add(hb_r_tags_set, "article");
nh_set_str_add(hb_r_tags_set, "aside");
nh_set_str_add(hb_r_tags_set, "footer");
nh_set_str_add(hb_r_tags_set, "header");
nh_set_str_add(hb_r_tags_set, "h1");
nh_set_str_add(hb_r_tags_set, "h2");
nh_set_str_add(hb_r_tags_set, "h3");
nh_set_str_add(hb_r_tags_set, "h4");
nh_set_str_add(hb_r_tags_set, "h5");
nh_set_str_add(hb_r_tags_set, "h6");
nh_set_str_add(hb_r_tags_set, "hgroup");
nh_set_str_add(hb_r_tags_set, "nav");
nh_set_str_add(hb_r_tags_set, "section");
nh_set_str_add(hb_r_tags_set, "blockquote");
nh_set_str_add(hb_r_tags_set, "dd");
nh_set_str_add(hb_r_tags_set, "dir");
nh_set_str_add(hb_r_tags_set, "div");
nh_set_str_add(hb_r_tags_set, "dl");
nh_set_str_add(hb_r_tags_set, "dt");
nh_set_str_add(hb_r_tags_set, "figcaption");
nh_set_str_add(hb_r_tags_set, "figure");
nh_set_str_add(hb_r_tags_set, "hr");
nh_set_str_add(hb_r_tags_set, "li");
nh_set_str_add(hb_r_tags_set, "main");
nh_set_str_add(hb_r_tags_set, "ol");
nh_set_str_add(hb_r_tags_set, "p");
nh_set_str_add(hb_r_tags_set, "pre");
nh_set_str_add(hb_r_tags_set, "ul");
nh_set_str_add(hb_r_tags_set, "a");
nh_set_str_add(hb_r_tags_set, "abbr");
nh_set_str_add(hb_r_tags_set, "b");
nh_set_str_add(hb_r_tags_set, "bdi");
nh_set_str_add(hb_r_tags_set, "bdo");
nh_set_str_add(hb_r_tags_set, "br");
nh_set_str_add(hb_r_tags_set, "cite");
nh_set_str_add(hb_r_tags_set, "code");
nh_set_str_add(hb_r_tags_set, "data");
nh_set_str_add(hb_r_tags_set, "dfn");
nh_set_str_add(hb_r_tags_set, "em");
nh_set_str_add(hb_r_tags_set, "i");
nh_set_str_add(hb_r_tags_set, "kbd");
nh_set_str_add(hb_r_tags_set, "mark");
nh_set_str_add(hb_r_tags_set, "q");
nh_set_str_add(hb_r_tags_set, "rp");
nh_set_str_add(hb_r_tags_set, "rt");
nh_set_str_add(hb_r_tags_set, "rtc");
nh_set_str_add(hb_r_tags_set, "ruby");
nh_set_str_add(hb_r_tags_set, "s");
nh_set_str_add(hb_r_tags_set, "samp");
nh_set_str_add(hb_r_tags_set, "small");
nh_set_str_add(hb_r_tags_set, "span");
nh_set_str_add(hb_r_tags_set, "strong");
nh_set_str_add(hb_r_tags_set, "sub");
nh_set_str_add(hb_r_tags_set, "sup");
nh_set_str_add(hb_r_tags_set, "time");
nh_set_str_add(hb_r_tags_set, "tt");
nh_set_str_add(hb_r_tags_set, "u");
nh_set_str_add(hb_r_tags_set, "var");
nh_set_str_add(hb_r_tags_set, "wbr");
nh_set_str_add(hb_r_tags_set, "area");
nh_set_str_add(hb_r_tags_set, "audio");
nh_set_str_add(hb_r_tags_set, "img");
nh_set_str_add(hb_r_tags_set, "map");
nh_set_str_add(hb_r_tags_set, "track");
nh_set_str_add(hb_r_tags_set, "video");
nh_set_str_add(hb_r_tags_set, "applet");
nh_set_str_add(hb_r_tags_set, "embed");
nh_set_str_add(hb_r_tags_set, "iframe");
nh_set_str_add(hb_r_tags_set, "noembed");
nh_set_str_add(hb_r_tags_set, "object");
nh_set_str_add(hb_r_tags_set, "param");
nh_set_str_add(hb_r_tags_set, "picture");
nh_set_str_add(hb_r_tags_set, "source");
nh_set_str_add(hb_r_tags_set, "canvas");
nh_set_str_add(hb_r_tags_set, "noscript");
nh_set_str_add(hb_r_tags_set, "script");
nh_set_str_add(hb_r_tags_set, "del");
nh_set_str_add(hb_r_tags_set, "ins");
nh_set_str_add(hb_r_tags_set, "caption");
nh_set_str_add(hb_r_tags_set, "col");
nh_set_str_add(hb_r_tags_set, "colgroup");
nh_set_str_add(hb_r_tags_set, "table");
nh_set_str_add(hb_r_tags_set, "tbody");
nh_set_str_add(hb_r_tags_set, "td");
nh_set_str_add(hb_r_tags_set, "tfoot");
nh_set_str_add(hb_r_tags_set, "th");
nh_set_str_add(hb_r_tags_set, "thead");
nh_set_str_add(hb_r_tags_set, "tr");
nh_set_str_add(hb_r_tags_set, "button");
nh_set_str_add(hb_r_tags_set, "datalist");
nh_set_str_add(hb_r_tags_set, "fieldset");
nh_set_str_add(hb_r_tags_set, "form");
nh_set_str_add(hb_r_tags_set, "input");
nh_set_str_add(hb_r_tags_set, "label");
nh_set_str_add(hb_r_tags_set, "legend");
nh_set_str_add(hb_r_tags_set, "meter");
nh_set_str_add(hb_r_tags_set, "optgroup");
nh_set_str_add(hb_r_tags_set, "option");
nh_set_str_add(hb_r_tags_set, "output");
nh_set_str_add(hb_r_tags_set, "progress");
nh_set_str_add(hb_r_tags_set, "select");
nh_set_str_add(hb_r_tags_set, "textarea");
nh_set_str_add(hb_r_tags_set, "details");
nh_set_str_add(hb_r_tags_set, "dialog");
nh_set_str_add(hb_r_tags_set, "menu");
nh_set_str_add(hb_r_tags_set, "menuitem");
nh_set_str_add(hb_r_tags_set, "summary");
nh_set_str_add(hb_r_tags_set, "content");
nh_set_str_add(hb_r_tags_set, "element");
nh_set_str_add(hb_r_tags_set, "shadow");
nh_set_str_add(hb_r_tags_set, "slot");
nh_set_str_add(hb_r_tags_set, "template");
nh_set_str_add(hb_r_tags_set, "acronym");
nh_set_str_add(hb_r_tags_set, "applet");
nh_set_str_add(hb_r_tags_set, "basefont");
nh_set_str_add(hb_r_tags_set, "bgsound");
nh_set_str_add(hb_r_tags_set, "big");
nh_set_str_add(hb_r_tags_set, "blink");
nh_set_str_add(hb_r_tags_set, "center");
nh_set_str_add(hb_r_tags_set, "command");
nh_set_str_add(hb_r_tags_set, "content");
nh_set_str_add(hb_r_tags_set, "dir");
nh_set_str_add(hb_r_tags_set, "element");
nh_set_str_add(hb_r_tags_set, "font");
nh_set_str_add(hb_r_tags_set, "frame");
nh_set_str_add(hb_r_tags_set, "frameset");
nh_set_str_add(hb_r_tags_set, "image");
nh_set_str_add(hb_r_tags_set, "isindex");
nh_set_str_add(hb_r_tags_set, "keygen");
nh_set_str_add(hb_r_tags_set, "listing");
nh_set_str_add(hb_r_tags_set, "marquee");
nh_set_str_add(hb_r_tags_set, "menuitem");
nh_set_str_add(hb_r_tags_set, "multicol");
nh_set_str_add(hb_r_tags_set, "nextid");
nh_set_str_add(hb_r_tags_set, "nobr");
nh_set_str_add(hb_r_tags_set, "noembed");
nh_set_str_add(hb_r_tags_set, "noframes");
nh_set_str_add(hb_r_tags_set, "plaintext");
nh_set_str_add(hb_r_tags_set, "shadow");
nh_set_str_add(hb_r_tags_set, "spacer");
nh_set_str_add(hb_r_tags_set, "strike");
nh_set_str_add(hb_r_tags_set, "tt");
nh_set_str_add(hb_r_tags_set, "xmp");
}
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();
return nh_set_str_has(hb_r_tags_set, tag);
}
#endif // _HDR_HYPERBUILD_RULE_TAGS

View File

@ -1,47 +1,30 @@
#ifndef _HDR_HYPERBUILD_RULE_VOIDTAGS
#define _HDR_HYPERBUILD_RULE_VOIDTAGS
#include "../ext/khash.h"
#include "../ext/nicehash/src/main/c/set/str.h"
const char *hb_r_voidtags_raw[] = {
"area",
"base",
"br",
"col",
"embed",
"hr",
"img",
"input",
"keygen",
"link",
"meta",
"param",
"source",
"track",
"wbr",
};
static nh_set_str_t hb_r_voidtags_set;
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);
}
void hb_r_voidtags_init() {
nh_set_str_add(hb_r_voidtags_set, "area");
nh_set_str_add(hb_r_voidtags_set, "base");
nh_set_str_add(hb_r_voidtags_set, "br");
nh_set_str_add(hb_r_voidtags_set, "col");
nh_set_str_add(hb_r_voidtags_set, "embed");
nh_set_str_add(hb_r_voidtags_set, "hr");
nh_set_str_add(hb_r_voidtags_set, "img");
nh_set_str_add(hb_r_voidtags_set, "input");
nh_set_str_add(hb_r_voidtags_set, "keygen");
nh_set_str_add(hb_r_voidtags_set, "link");
nh_set_str_add(hb_r_voidtags_set, "meta");
nh_set_str_add(hb_r_voidtags_set, "param");
nh_set_str_add(hb_r_voidtags_set, "source");
nh_set_str_add(hb_r_voidtags_set, "track");
nh_set_str_add(hb_r_voidtags_set, "wbr");
}
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();
return nh_set_str_has(hb_r_voidtags_set, tag);
}
#endif // _HDR_HYPERBUILD_RULE_VOIDTAGS

View File

@ -0,0 +1,16 @@
(function() {
"use strict";
let lines = [];
document.querySelectorAll(".named").forEach(t => {
let hex = t.nextElementSibling.textContent.slice(3, -1);
t.textContent.trim().split(/\s+/).map(raw => {
let r = raw.slice(1, -1);
lines.push([r, Number.parseInt(hex, 16)]);
});
});
console.log(lines.map(l => {
return `nh_map_str_int32_set(hb_r_entityrefs_map, "${l[0]}", 0x${l[1].toString(16)});`
}).sort().join("\n"));
})();