diff --git a/src/main/c/rule/entityrefs.c b/src/main/c/rule/entityrefs.c new file mode 100644 index 0000000..05ff84a --- /dev/null +++ b/src/main/c/rule/entityrefs.c @@ -0,0 +1,2065 @@ +#ifndef _HDR_HYPERBUILD_RULE_ENTITYREFS +#define _HDR_HYPERBUILD_RULE_ENTITYREFS + +#include "../ext/khash.h" + +// Sourced from https://dev.w3.org/html5/html-author/charref at 2018-07-01T05:40:00Z + +const char *hb_r_entityrefs_raw[] = { + "AElig", + "AMP", + "Aacute", + "Abreve", + "Acirc", + "Acy", + "Afr", + "Agrave", + "Alpha", + "Amacr", + "And", + "Aogon", + "Aopf", + "ApplyFunction", + "Aring", + "Ascr", + "Assign", + "Atilde", + "Auml", + "Backslash", + "Barv", + "Barwed", + "Bcy", + "Because", + "Bernoullis", + "Beta", + "Bfr", + "Bopf", + "Breve", + "Bscr", + "Bumpeq", + "CHcy", + "COPY", + "Cacute", + "Cap", + "CapitalDifferentialD", + "Cayleys", + "Ccaron", + "Ccedil", + "Ccirc", + "Cconint", + "Cdot", + "Cedilla", + "CenterDot", + "Cfr", + "Chi", + "CircleDot", + "CircleMinus", + "CirclePlus", + "CircleTimes", + "ClockwiseContourIntegral", + "CloseCurlyDoubleQuote", + "CloseCurlyQuote", + "Colon", + "Colone", + "Congruent", + "Conint", + "ContourIntegral", + "Copf", + "Coproduct", + "CounterClockwiseContourIntegral", + "Cross", + "Cscr", + "Cup", + "CupCap", + "DD", + "DDotrahd", + "DJcy", + "DScy", + "DZcy", + "Dagger", + "Darr", + "Dashv", + "Dcaron", + "Dcy", + "Del", + "Delta", + "Dfr", + "DiacriticalAcute", + "DiacriticalDot", + "DiacriticalDoubleAcute", + "DiacriticalGrave", + "DiacriticalTilde", + "Diamond", + "DifferentialD", + "Dopf", + "Dot", + "DotDot", + "DotEqual", + "DoubleContourIntegral", + "DoubleDot", + "DoubleDownArrow", + "DoubleLeftArrow", + "DoubleLeftRightArrow", + "DoubleLeftTee", + "DoubleLongLeftArrow", + "DoubleLongLeftRightArrow", + "DoubleLongRightArrow", + "DoubleRightArrow", + "DoubleRightTee", + "DoubleUpArrow", + "DoubleUpDownArrow", + "DoubleVerticalBar", + "DownArrow", + "DownArrowBar", + "DownArrowUpArrow", + "DownBreve", + "DownLeftRightVector", + "DownLeftTeeVector", + "DownLeftVector", + "DownLeftVectorBar", + "DownRightTeeVector", + "DownRightVector", + "DownRightVectorBar", + "DownTee", + "DownTeeArrow", + "Downarrow", + "Dscr", + "Dstrok", + "ENG", + "ETH", + "Eacute", + "Ecaron", + "Ecirc", + "Ecy", + "Edot", + "Efr", + "Egrave", + "Element", + "Emacr", + "EmptySmallSquare", + "EmptyVerySmallSquare", + "Eogon", + "Eopf", + "Epsilon", + "Equal", + "EqualTilde", + "Equilibrium", + "Escr", + "Esim", + "Eta", + "Euml", + "Exists", + "ExponentialE", + "Fcy", + "Ffr", + "FilledSmallSquare", + "FilledVerySmallSquare", + "Fopf", + "ForAll", + "Fouriertrf", + "Fscr", + "GJcy", + "GT", + "Gamma", + "Gammad", + "Gbreve", + "Gcedil", + "Gcirc", + "Gcy", + "Gdot", + "Gfr", + "Gg", + "Gopf", + "GreaterEqual", + "GreaterEqualLess", + "GreaterFullEqual", + "GreaterGreater", + "GreaterLess", + "GreaterSlantEqual", + "GreaterTilde", + "Gscr", + "Gt", + "HARDcy", + "Hacek", + "Hat", + "Hcirc", + "Hfr", + "HilbertSpace", + "Hopf", + "HorizontalLine", + "Hscr", + "Hstrok", + "HumpDownHump", + "HumpEqual", + "IEcy", + "IJlig", + "IOcy", + "Iacute", + "Icirc", + "Icy", + "Idot", + "Ifr", + "Igrave", + "Im", + "Imacr", + "ImaginaryI", + "Implies", + "Int", + "Integral", + "Intersection", + "InvisibleComma", + "InvisibleTimes", + "Iogon", + "Iopf", + "Iota", + "Iscr", + "Itilde", + "Iukcy", + "Iuml", + "Jcirc", + "Jcy", + "Jfr", + "Jopf", + "Jscr", + "Jsercy", + "Jukcy", + "KHcy", + "KJcy", + "Kappa", + "Kcedil", + "Kcy", + "Kfr", + "Kopf", + "Kscr", + "LJcy", + "LT", + "Lacute", + "Lambda", + "Lang", + "Laplacetrf", + "Larr", + "Lcaron", + "Lcedil", + "Lcy", + "LeftAngleBracket", + "LeftArrow", + "LeftArrowBar", + "LeftArrowRightArrow", + "LeftCeiling", + "LeftDoubleBracket", + "LeftDownTeeVector", + "LeftDownVector", + "LeftDownVectorBar", + "LeftFloor", + "LeftRightArrow", + "LeftRightVector", + "LeftTee", + "LeftTeeArrow", + "LeftTeeVector", + "LeftTriangle", + "LeftTriangleBar", + "LeftTriangleEqual", + "LeftUpDownVector", + "LeftUpTeeVector", + "LeftUpVector", + "LeftUpVectorBar", + "LeftVector", + "LeftVectorBar", + "Leftarrow", + "Leftrightarrow", + "LessEqualGreater", + "LessFullEqual", + "LessGreater", + "LessLess", + "LessSlantEqual", + "LessTilde", + "Lfr", + "Ll", + "Lleftarrow", + "Lmidot", + "LongLeftArrow", + "LongLeftRightArrow", + "LongRightArrow", + "Longleftarrow", + "Longleftrightarrow", + "Longrightarrow", + "Lopf", + "LowerLeftArrow", + "LowerRightArrow", + "Lscr", + "Lsh", + "Lstrok", + "Lt", + "Map", + "Mcy", + "MediumSpace", + "Mellintrf", + "Mfr", + "MinusPlus", + "Mopf", + "Mscr", + "Mu", + "NJcy", + "Nacute", + "Ncaron", + "Ncedil", + "Ncy", + "NegativeMediumSpace", + "NegativeThickSpace", + "NegativeThinSpace", + "NegativeVeryThinSpace", + "NestedGreaterGreater", + "NestedLessLess", + "NewLine", + "Nfr", + "NoBreak", + "NonBreakingSpace", + "Nopf", + "Not", + "NotCongruent", + "NotCupCap", + "NotDoubleVerticalBar", + "NotElement", + "NotEqual", + "NotExists", + "NotGreater", + "NotGreaterEqual", + "NotGreaterLess", + "NotGreaterTilde", + "NotLeftTriangle", + "NotLeftTriangleEqual", + "NotLess", + "NotLessEqual", + "NotLessGreater", + "NotLessTilde", + "NotPrecedes", + "NotPrecedesSlantEqual", + "NotReverseElement", + "NotRightTriangle", + "NotRightTriangleEqual", + "NotSquareSubsetEqual", + "NotSquareSupersetEqual", + "NotSubsetEqual", + "NotSucceeds", + "NotSucceedsSlantEqual", + "NotSupersetEqual", + "NotTilde", + "NotTildeEqual", + "NotTildeFullEqual", + "NotTildeTilde", + "NotVerticalBar", + "Nscr", + "Ntilde", + "Nu", + "OElig", + "Oacute", + "Ocirc", + "Ocy", + "Odblac", + "Ofr", + "Ograve", + "Omacr", + "Omega", + "Omicron", + "Oopf", + "OpenCurlyDoubleQuote", + "OpenCurlyQuote", + "Or", + "Oscr", + "Oslash", + "Otilde", + "Otimes", + "Ouml", + "OverBar", + "OverBrace", + "OverBracket", + "OverParenthesis", + "PartialD", + "Pcy", + "Pfr", + "Phi", + "Pi", + "PlusMinus", + "Poincareplane", + "Popf", + "Pr", + "Precedes", + "PrecedesEqual", + "PrecedesSlantEqual", + "PrecedesTilde", + "Prime", + "Product", + "Proportion", + "Proportional", + "Pscr", + "Psi", + "QUOT", + "Qfr", + "Qopf", + "Qscr", + "RBarr", + "REG", + "Racute", + "Rang", + "Rarr", + "Rarrtl", + "Rcaron", + "Rcedil", + "Rcy", + "Re", + "ReverseElement", + "ReverseEquilibrium", + "ReverseUpEquilibrium", + "Rfr", + "Rho", + "RightAngleBracket", + "RightArrow", + "RightArrowBar", + "RightArrowLeftArrow", + "RightCeiling", + "RightDoubleBracket", + "RightDownTeeVector", + "RightDownVector", + "RightDownVectorBar", + "RightFloor", + "RightTee", + "RightTeeArrow", + "RightTeeVector", + "RightTriangle", + "RightTriangleBar", + "RightTriangleEqual", + "RightUpDownVector", + "RightUpTeeVector", + "RightUpVector", + "RightUpVectorBar", + "RightVector", + "RightVectorBar", + "Rightarrow", + "Ropf", + "RoundImplies", + "Rrightarrow", + "Rscr", + "Rsh", + "RuleDelayed", + "SHCHcy", + "SHcy", + "SOFTcy", + "Sacute", + "Sc", + "Scaron", + "Scedil", + "Scirc", + "Scy", + "Sfr", + "ShortDownArrow", + "ShortLeftArrow", + "ShortRightArrow", + "ShortUpArrow", + "Sigma", + "SmallCircle", + "Sopf", + "Sqrt", + "Square", + "SquareIntersection", + "SquareSubset", + "SquareSubsetEqual", + "SquareSuperset", + "SquareSupersetEqual", + "SquareUnion", + "Sscr", + "Star", + "Sub", + "Subset", + "SubsetEqual", + "Succeeds", + "SucceedsEqual", + "SucceedsSlantEqual", + "SucceedsTilde", + "SuchThat", + "Sum", + "Sup", + "Superset", + "SupersetEqual", + "Supset", + "THORN", + "TRADE", + "TSHcy", + "TScy", + "Tab", + "Tau", + "Tcaron", + "Tcedil", + "Tcy", + "Tfr", + "Therefore", + "Theta", + "ThinSpace", + "Tilde", + "TildeEqual", + "TildeFullEqual", + "TildeTilde", + "Topf", + "TripleDot", + "Tscr", + "Tstrok", + "Uacute", + "Uarr", + "Uarrocir", + "Ubrcy", + "Ubreve", + "Ucirc", + "Ucy", + "Udblac", + "Ufr", + "Ugrave", + "Umacr", + "UnderBar", + "UnderBrace", + "UnderBracket", + "UnderParenthesis", + "Union", + "UnionPlus", + "Uogon", + "Uopf", + "UpArrow", + "UpArrowBar", + "UpArrowDownArrow", + "UpDownArrow", + "UpEquilibrium", + "UpTee", + "UpTeeArrow", + "Uparrow", + "Updownarrow", + "UpperLeftArrow", + "UpperRightArrow", + "Upsi", + "Upsilon", + "Uring", + "Uscr", + "Utilde", + "Uuml", + "VDash", + "Vbar", + "Vcy", + "Vdash", + "Vdashl", + "Vee", + "Verbar", + "Vert", + "VerticalBar", + "VerticalLine", + "VerticalSeparator", + "VerticalTilde", + "VeryThinSpace", + "Vfr", + "Vopf", + "Vscr", + "Vvdash", + "Wcirc", + "Wedge", + "Wfr", + "Wopf", + "Wscr", + "Xfr", + "Xi", + "Xopf", + "Xscr", + "YAcy", + "YIcy", + "YUcy", + "Yacute", + "Ycirc", + "Ycy", + "Yfr", + "Yopf", + "Yscr", + "Yuml", + "ZHcy", + "Zacute", + "Zcaron", + "Zcy", + "Zdot", + "ZeroWidthSpace", + "Zeta", + "Zfr", + "Zopf", + "Zscr", + "aacute", + "abreve", + "ac", + "acd", + "acirc", + "acute", + "acy", + "aelig", + "af", + "afr", + "agrave", + "alefsym", + "aleph", + "alpha", + "amacr", + "amalg", + "amp", + "and", + "andand", + "andd", + "andslope", + "andv", + "ang", + "ange", + "angle", + "angmsd", + "angmsdaa", + "angmsdab", + "angmsdac", + "angmsdad", + "angmsdae", + "angmsdaf", + "angmsdag", + "angmsdah", + "angrt", + "angrtvb", + "angrtvbd", + "angsph", + "angst", + "angzarr", + "aogon", + "aopf", + "ap", + "apE", + "apacir", + "ape", + "apid", + "apos", + "approx", + "approxeq", + "aring", + "ascr", + "ast", + "asymp", + "asympeq", + "atilde", + "auml", + "awconint", + "awint", + "bNot", + "backcong", + "backepsilon", + "backprime", + "backsim", + "backsimeq", + "barvee", + "barwed", + "barwedge", + "bbrk", + "bbrktbrk", + "bcong", + "bcy", + "bdquo", + "becaus", + "because", + "bemptyv", + "bepsi", + "bernou", + "beta", + "beth", + "between", + "bfr", + "bigcap", + "bigcirc", + "bigcup", + "bigodot", + "bigoplus", + "bigotimes", + "bigsqcup", + "bigstar", + "bigtriangledown", + "bigtriangleup", + "biguplus", + "bigvee", + "bigwedge", + "bkarow", + "blacklozenge", + "blacksquare", + "blacktriangle", + "blacktriangledown", + "blacktriangleleft", + "blacktriangleright", + "blank", + "blk12", + "blk14", + "blk34", + "block", + "bnot", + "bopf", + "bot", + "bottom", + "bowtie", + "boxDL", + "boxDR", + "boxDl", + "boxDr", + "boxH", + "boxHD", + "boxHU", + "boxHd", + "boxHu", + "boxUL", + "boxUR", + "boxUl", + "boxUr", + "boxV", + "boxVH", + "boxVL", + "boxVR", + "boxVh", + "boxVl", + "boxVr", + "boxbox", + "boxdL", + "boxdR", + "boxdl", + "boxdr", + "boxh", + "boxhD", + "boxhU", + "boxhd", + "boxhu", + "boxminus", + "boxplus", + "boxtimes", + "boxuL", + "boxuR", + "boxul", + "boxur", + "boxv", + "boxvH", + "boxvL", + "boxvR", + "boxvh", + "boxvl", + "boxvr", + "bprime", + "breve", + "brvbar", + "bscr", + "bsemi", + "bsim", + "bsime", + "bsol", + "bsolb", + "bull", + "bullet", + "bump", + "bumpE", + "bumpe", + "bumpeq", + "cacute", + "cap", + "capand", + "capbrcup", + "capcap", + "capcup", + "capdot", + "caret", + "caron", + "ccaps", + "ccaron", + "ccedil", + "ccirc", + "ccups", + "ccupssm", + "cdot", + "cedil", + "cemptyv", + "cent", + "centerdot", + "cfr", + "chcy", + "check", + "checkmark", + "chi", + "cir", + "cirE", + "circ", + "circeq", + "circlearrowleft", + "circlearrowright", + "circledR", + "circledS", + "circledast", + "circledcirc", + "circleddash", + "cire", + "cirfnint", + "cirmid", + "cirscir", + "clubs", + "clubsuit", + "colon", + "colone", + "coloneq", + "comma", + "commat", + "comp", + "compfn", + "complement", + "complexes", + "cong", + "congdot", + "conint", + "copf", + "coprod", + "copy", + "copysr", + "crarr", + "cross", + "cscr", + "csub", + "csube", + "csup", + "csupe", + "ctdot", + "cudarrl", + "cudarrr", + "cuepr", + "cuesc", + "cularr", + "cularrp", + "cup", + "cupbrcap", + "cupcap", + "cupcup", + "cupdot", + "cupor", + "curarr", + "curarrm", + "curlyeqprec", + "curlyeqsucc", + "curlyvee", + "curlywedge", + "curren", + "curvearrowleft", + "curvearrowright", + "cuvee", + "cuwed", + "cwconint", + "cwint", + "cylcty", + "dArr", + "dHar", + "dagger", + "daleth", + "darr", + "dash", + "dashv", + "dbkarow", + "dblac", + "dcaron", + "dcy", + "dd", + "ddagger", + "ddarr", + "ddotseq", + "deg", + "delta", + "demptyv", + "dfisht", + "dfr", + "dharl", + "dharr", + "diam", + "diamond", + "diamondsuit", + "diams", + "die", + "digamma", + "disin", + "div", + "divide", + "divideontimes", + "divonx", + "djcy", + "dlcorn", + "dlcrop", + "dollar", + "dopf", + "dot", + "doteq", + "doteqdot", + "dotminus", + "dotplus", + "dotsquare", + "doublebarwedge", + "downarrow", + "downdownarrows", + "downharpoonleft", + "downharpoonright", + "drbkarow", + "drcorn", + "drcrop", + "dscr", + "dscy", + "dsol", + "dstrok", + "dtdot", + "dtri", + "dtrif", + "duarr", + "duhar", + "dwangle", + "dzcy", + "dzigrarr", + "eDDot", + "eDot", + "eacute", + "easter", + "ecaron", + "ecir", + "ecirc", + "ecolon", + "ecy", + "edot", + "ee", + "efDot", + "efr", + "eg", + "egrave", + "egs", + "egsdot", + "el", + "elinters", + "ell", + "els", + "elsdot", + "emacr", + "empty", + "emptyset", + "emptyv", + "emsp", + "emsp13", + "emsp14", + "eng", + "ensp", + "eogon", + "eopf", + "epar", + "eparsl", + "eplus", + "epsi", + "epsilon", + "epsiv", + "eqcirc", + "eqcolon", + "eqsim", + "eqslantgtr", + "eqslantless", + "equals", + "equest", + "equiv", + "equivDD", + "eqvparsl", + "erDot", + "erarr", + "escr", + "esdot", + "esim", + "eta", + "eth", + "euml", + "euro", + "excl", + "exist", + "expectation", + "exponentiale", + "fallingdotseq", + "fcy", + "female", + "ffilig", + "fflig", + "ffllig", + "ffr", + "filig", + "flat", + "fllig", + "fltns", + "fnof", + "fopf", + "forall", + "fork", + "forkv", + "fpartint", + "frac12", + "frac13", + "frac14", + "frac15", + "frac16", + "frac18", + "frac23", + "frac25", + "frac34", + "frac35", + "frac38", + "frac45", + "frac56", + "frac58", + "frac78", + "frasl", + "frown", + "fscr", + "gE", + "gEl", + "gacute", + "gamma", + "gammad", + "gap", + "gbreve", + "gcirc", + "gcy", + "gdot", + "ge", + "gel", + "geq", + "geqq", + "geqslant", + "ges", + "gescc", + "gesdot", + "gesdoto", + "gesdotol", + "gesles", + "gfr", + "gg", + "ggg", + "gimel", + "gjcy", + "gl", + "glE", + "gla", + "glj", + "gnE", + "gnap", + "gnapprox", + "gne", + "gneq", + "gneqq", + "gnsim", + "gopf", + "grave", + "gscr", + "gsim", + "gsime", + "gsiml", + "gt", + "gtcc", + "gtcir", + "gtdot", + "gtlPar", + "gtquest", + "gtrapprox", + "gtrarr", + "gtrdot", + "gtreqless", + "gtreqqless", + "gtrless", + "gtrsim", + "hArr", + "hairsp", + "half", + "hamilt", + "hardcy", + "harr", + "harrcir", + "harrw", + "hbar", + "hcirc", + "hearts", + "heartsuit", + "hellip", + "hercon", + "hfr", + "hksearow", + "hkswarow", + "hoarr", + "homtht", + "hookleftarrow", + "hookrightarrow", + "hopf", + "horbar", + "hscr", + "hslash", + "hstrok", + "hybull", + "hyphen", + "iacute", + "ic", + "icirc", + "icy", + "iecy", + "iexcl", + "iff", + "ifr", + "igrave", + "ii", + "iiiint", + "iiint", + "iinfin", + "iiota", + "ijlig", + "imacr", + "image", + "imagline", + "imagpart", + "imath", + "imof", + "imped", + "in", + "incare", + "infin", + "infintie", + "inodot", + "int", + "intcal", + "integers", + "intercal", + "intlarhk", + "intprod", + "iocy", + "iogon", + "iopf", + "iota", + "iprod", + "iquest", + "iscr", + "isin", + "isinE", + "isindot", + "isins", + "isinsv", + "isinv", + "it", + "itilde", + "iukcy", + "iuml", + "jcirc", + "jcy", + "jfr", + "jmath", + "jopf", + "jscr", + "jsercy", + "jukcy", + "kappa", + "kappav", + "kcedil", + "kcy", + "kfr", + "kgreen", + "khcy", + "kjcy", + "kopf", + "kscr", + "lAarr", + "lArr", + "lAtail", + "lBarr", + "lE", + "lEg", + "lHar", + "lacute", + "laemptyv", + "lagran", + "lambda", + "lang", + "langd", + "langle", + "lap", + "laquo", + "larr", + "larrb", + "larrbfs", + "larrfs", + "larrhk", + "larrlp", + "larrpl", + "larrsim", + "larrtl", + "lat", + "latail", + "late", + "lbarr", + "lbbrk", + "lbrace", + "lbrack", + "lbrke", + "lbrksld", + "lbrkslu", + "lcaron", + "lcedil", + "lceil", + "lcub", + "lcy", + "ldca", + "ldquo", + "ldquor", + "ldrdhar", + "ldrushar", + "ldsh", + "le", + "leftarrow", + "leftarrowtail", + "leftharpoondown", + "leftharpoonup", + "leftleftarrows", + "leftrightarrow", + "leftrightarrows", + "leftrightharpoons", + "leftrightsquigarrow", + "leftthreetimes", + "leg", + "leq", + "leqq", + "leqslant", + "les", + "lescc", + "lesdot", + "lesdoto", + "lesdotor", + "lesges", + "lessapprox", + "lessdot", + "lesseqgtr", + "lesseqqgtr", + "lessgtr", + "lesssim", + "lfisht", + "lfloor", + "lfr", + "lg", + "lgE", + "lhard", + "lharu", + "lharul", + "lhblk", + "ljcy", + "ll", + "llarr", + "llcorner", + "llhard", + "lltri", + "lmidot", + "lmoust", + "lmoustache", + "lnE", + "lnap", + "lnapprox", + "lne", + "lneq", + "lneqq", + "lnsim", + "loang", + "loarr", + "lobrk", + "longleftarrow", + "longleftrightarrow", + "longmapsto", + "longrightarrow", + "looparrowleft", + "looparrowright", + "lopar", + "lopf", + "loplus", + "lotimes", + "lowast", + "lowbar", + "loz", + "lozenge", + "lozf", + "lpar", + "lparlt", + "lrarr", + "lrcorner", + "lrhar", + "lrhard", + "lrm", + "lrtri", + "lsaquo", + "lscr", + "lsh", + "lsim", + "lsime", + "lsimg", + "lsqb", + "lsquo", + "lsquor", + "lstrok", + "lt", + "ltcc", + "ltcir", + "ltdot", + "lthree", + "ltimes", + "ltlarr", + "ltquest", + "ltrPar", + "ltri", + "ltrie", + "ltrif", + "lurdshar", + "luruhar", + "mDDot", + "macr", + "male", + "malt", + "maltese", + "map", + "mapsto", + "mapstodown", + "mapstoleft", + "mapstoup", + "marker", + "mcomma", + "mcy", + "mdash", + "measuredangle", + "mfr", + "mho", + "micro", + "mid", + "midast", + "midcir", + "middot", + "minus", + "minusb", + "minusd", + "minusdu", + "mlcp", + "mldr", + "mnplus", + "models", + "mopf", + "mp", + "mscr", + "mstpos", + "mu", + "multimap", + "mumap", + "nLeftarrow", + "nLeftrightarrow", + "nRightarrow", + "nVDash", + "nVdash", + "nabla", + "nacute", + "nap", + "napos", + "napprox", + "natur", + "natural", + "naturals", + "nbsp", + "ncap", + "ncaron", + "ncedil", + "ncong", + "ncup", + "ncy", + "ndash", + "ne", + "neArr", + "nearhk", + "nearr", + "nearrow", + "nequiv", + "nesear", + "nexist", + "nexists", + "nfr", + "nge", + "ngeq", + "ngsim", + "ngt", + "ngtr", + "nhArr", + "nharr", + "nhpar", + "ni", + "nis", + "nisd", + "niv", + "njcy", + "nlArr", + "nlarr", + "nldr", + "nle", + "nleftarrow", + "nleftrightarrow", + "nleq", + "nless", + "nlsim", + "nlt", + "nltri", + "nltrie", + "nmid", + "nopf", + "not", + "notin", + "notinva", + "notinvb", + "notinvc", + "notni", + "notniva", + "notnivb", + "notnivc", + "npar", + "nparallel", + "npolint", + "npr", + "nprcue", + "nprec", + "nrArr", + "nrarr", + "nrightarrow", + "nrtri", + "nrtrie", + "nsc", + "nsccue", + "nscr", + "nshortmid", + "nshortparallel", + "nsim", + "nsime", + "nsimeq", + "nsmid", + "nspar", + "nsqsube", + "nsqsupe", + "nsub", + "nsube", + "nsubseteq", + "nsucc", + "nsup", + "nsupe", + "nsupseteq", + "ntgl", + "ntilde", + "ntlg", + "ntriangleleft", + "ntrianglelefteq", + "ntriangleright", + "ntrianglerighteq", + "nu", + "num", + "numero", + "numsp", + "nvDash", + "nvHarr", + "nvdash", + "nvinfin", + "nvlArr", + "nvrArr", + "nwArr", + "nwarhk", + "nwarr", + "nwarrow", + "nwnear", + "oS", + "oacute", + "oast", + "ocir", + "ocirc", + "ocy", + "odash", + "odblac", + "odiv", + "odot", + "odsold", + "oelig", + "ofcir", + "ofr", + "ogon", + "ograve", + "ogt", + "ohbar", + "ohm", + "oint", + "olarr", + "olcir", + "olcross", + "oline", + "olt", + "omacr", + "omega", + "omicron", + "omid", + "ominus", + "oopf", + "opar", + "operp", + "oplus", + "or", + "orarr", + "ord", + "order", + "orderof", + "ordf", + "ordm", + "origof", + "oror", + "orslope", + "orv", + "oscr", + "oslash", + "osol", + "otilde", + "otimes", + "otimesas", + "ouml", + "ovbar", + "par", + "para", + "parallel", + "parsim", + "parsl", + "part", + "pcy", + "percnt", + "period", + "permil", + "perp", + "pertenk", + "pfr", + "phi", + "phiv", + "phmmat", + "phone", + "pi", + "pitchfork", + "piv", + "planck", + "planckh", + "plankv", + "plus", + "plusacir", + "plusb", + "pluscir", + "plusdo", + "plusdu", + "pluse", + "plusmn", + "plussim", + "plustwo", + "pm", + "pointint", + "popf", + "pound", + "pr", + "prE", + "prap", + "prcue", + "pre", + "prec", + "precapprox", + "preccurlyeq", + "preceq", + "precnapprox", + "precneqq", + "precnsim", + "precsim", + "prime", + "primes", + "prnE", + "prnap", + "prnsim", + "prod", + "profalar", + "profline", + "profsurf", + "prop", + "propto", + "prsim", + "prurel", + "pscr", + "psi", + "puncsp", + "qfr", + "qint", + "qopf", + "qprime", + "qscr", + "quaternions", + "quatint", + "quest", + "questeq", + "quot", + "rAarr", + "rArr", + "rAtail", + "rBarr", + "rHar", + "race", + "racute", + "radic", + "raemptyv", + "rang", + "rangd", + "range", + "rangle", + "raquo", + "rarr", + "rarrap", + "rarrb", + "rarrbfs", + "rarrc", + "rarrfs", + "rarrhk", + "rarrlp", + "rarrpl", + "rarrsim", + "rarrtl", + "rarrw", + "ratail", + "ratio", + "rationals", + "rbarr", + "rbbrk", + "rbrace", + "rbrack", + "rbrke", + "rbrksld", + "rbrkslu", + "rcaron", + "rcedil", + "rceil", + "rcub", + "rcy", + "rdca", + "rdldhar", + "rdquo", + "rdquor", + "rdsh", + "real", + "realine", + "realpart", + "reals", + "rect", + "reg", + "rfisht", + "rfloor", + "rfr", + "rhard", + "rharu", + "rharul", + "rho", + "rhov", + "rightarrow", + "rightarrowtail", + "rightharpoondown", + "rightharpoonup", + "rightleftarrows", + "rightleftharpoons", + "rightrightarrows", + "rightsquigarrow", + "rightthreetimes", + "ring", + "risingdotseq", + "rlarr", + "rlhar", + "rlm", + "rmoust", + "rmoustache", + "rnmid", + "roang", + "roarr", + "robrk", + "ropar", + "ropf", + "roplus", + "rotimes", + "rpar", + "rpargt", + "rppolint", + "rrarr", + "rsaquo", + "rscr", + "rsh", + "rsqb", + "rsquo", + "rsquor", + "rthree", + "rtimes", + "rtri", + "rtrie", + "rtrif", + "rtriltri", + "ruluhar", + "rx", + "sacute", + "sbquo", + "sc", + "scE", + "scap", + "scaron", + "sccue", + "sce", + "scedil", + "scirc", + "scnE", + "scnap", + "scnsim", + "scpolint", + "scsim", + "scy", + "sdot", + "sdotb", + "sdote", + "seArr", + "searhk", + "searr", + "searrow", + "sect", + "semi", + "seswar", + "setminus", + "setmn", + "sext", + "sfr", + "sfrown", + "sharp", + "shchcy", + "shcy", + "shortmid", + "shortparallel", + "shy", + "sigma", + "sigmaf", + "sigmav", + "sim", + "simdot", + "sime", + "simeq", + "simg", + "simgE", + "siml", + "simlE", + "simne", + "simplus", + "simrarr", + "slarr", + "smallsetminus", + "smashp", + "smeparsl", + "smid", + "smile", + "smt", + "smte", + "softcy", + "sol", + "solb", + "solbar", + "sopf", + "spades", + "spadesuit", + "spar", + "sqcap", + "sqcup", + "sqsub", + "sqsube", + "sqsubset", + "sqsubseteq", + "sqsup", + "sqsupe", + "sqsupset", + "sqsupseteq", + "squ", + "square", + "squarf", + "squf", + "srarr", + "sscr", + "ssetmn", + "ssmile", + "sstarf", + "star", + "starf", + "straightepsilon", + "straightphi", + "strns", + "sub", + "subE", + "subdot", + "sube", + "subedot", + "submult", + "subnE", + "subne", + "subplus", + "subrarr", + "subset", + "subseteq", + "subseteqq", + "subsetneq", + "subsetneqq", + "subsim", + "subsub", + "subsup", + "succ", + "succapprox", + "succcurlyeq", + "succeq", + "succnapprox", + "succneqq", + "succnsim", + "succsim", + "sum", + "sung", + "sup", + "sup1", + "sup2", + "sup3", + "supE", + "supdot", + "supdsub", + "supe", + "supedot", + "suphsub", + "suplarr", + "supmult", + "supnE", + "supne", + "supplus", + "supset", + "supseteq", + "supseteqq", + "supsetneq", + "supsetneqq", + "supsim", + "supsub", + "supsup", + "swArr", + "swarhk", + "swarr", + "swarrow", + "swnwar", + "szlig", + "target", + "tau", + "tbrk", + "tcaron", + "tcedil", + "tcy", + "tdot", + "telrec", + "tfr", + "there4", + "therefore", + "theta", + "thetasym", + "thetav", + "thickapprox", + "thicksim", + "thinsp", + "thkap", + "thksim", + "thorn", + "tilde", + "times", + "timesb", + "timesbar", + "timesd", + "tint", + "toea", + "top", + "topbot", + "topcir", + "topf", + "topfork", + "tosa", + "tprime", + "trade", + "triangle", + "triangledown", + "triangleleft", + "trianglelefteq", + "triangleq", + "triangleright", + "trianglerighteq", + "tridot", + "trie", + "triminus", + "triplus", + "trisb", + "tritime", + "trpezium", + "tscr", + "tscy", + "tshcy", + "tstrok", + "twixt", + "twoheadleftarrow", + "twoheadrightarrow", + "uArr", + "uHar", + "uacute", + "uarr", + "ubrcy", + "ubreve", + "ucirc", + "ucy", + "udarr", + "udblac", + "udhar", + "ufisht", + "ufr", + "ugrave", + "uharl", + "uharr", + "uhblk", + "ulcorn", + "ulcorner", + "ulcrop", + "ultri", + "umacr", + "uml", + "uogon", + "uopf", + "uparrow", + "updownarrow", + "upharpoonleft", + "upharpoonright", + "uplus", + "upsi", + "upsih", + "upsilon", + "upuparrows", + "urcorn", + "urcorner", + "urcrop", + "uring", + "urtri", + "uscr", + "utdot", + "utilde", + "utri", + "utrif", + "uuarr", + "uuml", + "uwangle", + "vArr", + "vBar", + "vBarv", + "vDash", + "vangrt", + "varepsilon", + "varkappa", + "varnothing", + "varphi", + "varpi", + "varpropto", + "varr", + "varrho", + "varsigma", + "vartheta", + "vartriangleleft", + "vartriangleright", + "vcy", + "vdash", + "vee", + "veebar", + "veeeq", + "vellip", + "verbar", + "vert", + "vfr", + "vltri", + "vopf", + "vprop", + "vrtri", + "vscr", + "vzigzag", + "wcirc", + "wedbar", + "wedge", + "wedgeq", + "weierp", + "wfr", + "wopf", + "wp", + "wr", + "wreath", + "wscr", + "xcap", + "xcirc", + "xcup", + "xdtri", + "xfr", + "xhArr", + "xharr", + "xi", + "xlArr", + "xlarr", + "xmap", + "xnis", + "xodot", + "xopf", + "xoplus", + "xotime", + "xrArr", + "xrarr", + "xscr", + "xsqcup", + "xuplus", + "xutri", + "xvee", + "xwedge", + "yacute", + "yacy", + "ycirc", + "ycy", + "yen", + "yfr", + "yicy", + "yopf", + "yscr", + "yucy", + "yuml", + "zacute", + "zcaron", + "zcy", + "zdot", + "zeetrf", + "zeta", + "zfr", + "zhcy", + "zigrarr", + "zopf", + "zscr", + "zwj", + "zwnj", +}; + +KHASH_SET_INIT_STR(hb_r_entityrefs) + +static khash_t(hb_r_entityrefs) *hb_r_entityrefs_h; + +static void hb_r_entityrefs_init() { + hb_r_entityrefs_h = kh_init(hb_r_entityrefs); + + int rv; + + for (int i = 0; i < sizeof(hb_r_entityrefs_raw) / sizeof(hb_r_entityrefs_raw[0]); i++) { + kh_put(hb_r_entityrefs, hb_r_entityrefs_h, hb_r_entityrefs_raw[i], &rv); + } +} + +int hb_r_entityrefs_check(char *tag) { + khint_t k = kh_get(hb_r_entityrefs, hb_r_entityrefs_h, tag); + return k != kh_end(hb_r_entityrefs_h); +} + +void hb_r_entityrefs_init() { + hb_r_entityrefs_init(); +} + +#endif // _HDR_HYPERBUILD_RULE_ENTITYREFS diff --git a/src/main/c/rule/inlinetags.c b/src/main/c/rule/inlinetags.c new file mode 100644 index 0000000..d8e087d --- /dev/null +++ b/src/main/c/rule/inlinetags.c @@ -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 diff --git a/src/main/c/rule/tags.c b/src/main/c/rule/tags.c new file mode 100644 index 0000000..f07b8ce --- /dev/null +++ b/src/main/c/rule/tags.c @@ -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 diff --git a/src/main/c/rule/voidtags.c b/src/main/c/rule/voidtags.c new file mode 100644 index 0000000..fc238e3 --- /dev/null +++ b/src/main/c/rule/voidtags.c @@ -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