diff --git a/src/nu/validator/htmlparser/impl/AttributeName.java b/src/nu/validator/htmlparser/impl/AttributeName.java
index bf4e204d..26b3ceb7 100644
--- a/src/nu/validator/htmlparser/impl/AttributeName.java
+++ b/src/nu/validator/htmlparser/impl/AttributeName.java
@@ -212,7 +212,42 @@ public final class AttributeName
*/
@Inline static AttributeName nameByBuffer(@NoLength char[] buf,
int length, Interner interner) {
- // XXX deal with offset
+ if (length == 5) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "class")) {
+ return AttributeName.CLASS;
+ }
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "value")) {
+ return AttributeName.VALUE;
+ }
+ } else if (length > 5) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "data-")) {
+ if (length == 7 && Portability.bufferStartsWithLiteralAtOffsetAssumeSufficientLength(buf, "id", 5)) {
+ return AttributeName.DATA_ID;
+ }
+ if (length == 13 && Portability.bufferStartsWithLiteralAtOffsetAssumeSufficientLength(buf, "priority", 5)) {
+ return AttributeName.DATA_PRIORITY;
+ }
+ return null;
+ }
+ if (length == 7) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "checked")) {
+ return AttributeName.CHECKED;
+ }
+ }
+ } else if (length == 4) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "type")) {
+ return AttributeName.TYPE;
+ }
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "href")) {
+ return AttributeName.HREF;
+ }
+ } else if (length == 2) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "id")) {
+ return AttributeName.ID;
+ }
+ // Should we have `is` here?
+ }
+ // Should be have `src`, `alt`, etc. here?
@Unsigned int hash = AttributeName.bufToHash(buf, length);
int[] hashes;
hashes = AttributeName.ATTRIBUTE_HASHES;
@@ -486,6 +521,22 @@ boolean equalsAnother(AttributeName another) {
return this.getLocal(AttributeName.HTML) == another.getLocal(AttributeName.HTML);
}
+ public static final AttributeName DATA_ID = new AttributeName(ALL_NO_NS, "data-id", "data-id", "data-id", "data-id", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
+ public static final AttributeName DATA_PRIORITY = new AttributeName(ALL_NO_NS, "data-priority", "data-priority", "data-priority", "data-priority", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
+ public static final AttributeName CLASS = new AttributeName(ALL_NO_NS, "class", "class", "class", "class", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
+ public static final AttributeName VALUE = new AttributeName(ALL_NO_NS, "value", "value", "value", "value", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
+ public static final AttributeName CHECKED = new AttributeName(ALL_NO_NS, "checked", "checked", "checked", "checked", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN);
+
+ public static final AttributeName TYPE = new AttributeName(ALL_NO_NS, "type", "type", "type", "type", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED);
+
+ public static final AttributeName HREF = new AttributeName(ALL_NO_NS, "href", "href", "href", "href", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
+ public static final AttributeName ID = new AttributeName(ALL_NO_NS, "id", "id", "id", "id", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+
// START CODE ONLY USED FOR GENERATING CODE uncomment to regenerate
// /**
@@ -779,7 +830,6 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName ONDBLCLICK = new AttributeName(ALL_NO_NS, "ondblclick", "ondblclick", "ondblclick", "ondblclick", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName ONABORT = new AttributeName(ALL_NO_NS, "onabort", "onabort", "onabort", "onabort", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName CALCMODE = new AttributeName(ALL_NO_NS, "calcmode", "calcmode", "calcMode", "calcmode", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName CHECKED = new AttributeName(ALL_NO_NS, "checked", "checked", "checked", "checked", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED | BOOLEAN);
public static final AttributeName FENCE = new AttributeName(ALL_NO_NS, "fence", "fence", "fence", "fence", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName FETCHPRIORITY = new AttributeName(ALL_NO_NS, "fetchpriority", "fetchpriority", "fetchpriority", "fetchpriority", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName NONCE = new AttributeName(ALL_NO_NS, "nonce", "nonce", "nonce", "nonce", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -790,7 +840,6 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName SPECULAREXPONENT = new AttributeName(ALL_NO_NS, "specularexponent", "specularexponent", "specularExponent", "specularexponent", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SPECULARCONSTANT = new AttributeName(ALL_NO_NS, "specularconstant", "specularconstant", "specularConstant", "specularconstant", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName BORDER = new AttributeName(ALL_NO_NS, "border", "border", "border", "border", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName ID = new AttributeName(ALL_NO_NS, "id", "id", "id", "id", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName GRADIENTTRANSFORM = new AttributeName(ALL_NO_NS, "gradienttransform", "gradienttransform", "gradientTransform", "gradienttransform", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName GRADIENTUNITS = new AttributeName(ALL_NO_NS, "gradientunits", "gradientunits", "gradientUnits", "gradientunits", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName HIDDEN = new AttributeName(ALL_NO_NS, "hidden", "hidden", "hidden", "hidden", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -804,11 +853,11 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName SHADOWROOTCLONABLE = new AttributeName(ALL_NO_NS, "shadowrootclonable", "shadowrootclonable", "shadowrootclonable", "shadowrootclonable", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SHADOWROOTSERIALIZABLE = new AttributeName(ALL_NO_NS, "shadowrootserializable", "shadowrootserializable", "shadowrootserializable", "shadowrootserializable", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SRCDOC = new AttributeName(ALL_NO_NS, "srcdoc", "srcdoc", "srcdoc", "srcdoc", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+ public static final AttributeName SHADOWROOTSLOTASSIGNMENT = new AttributeName(ALL_NO_NS, "shadowrootslotassignment", "shadowrootslotassignment", "shadowrootslotassignment", "shadowrootslotassignment", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName STDDEVIATION = new AttributeName(ALL_NO_NS, "stddeviation", "stddeviation", "stdDeviation", "stddeviation", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SANDBOX = new AttributeName(ALL_NO_NS, "sandbox", "sandbox", "sandbox", "sandbox", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SHADOWROOTCUSTOMELEMENTREGISTRY = new AttributeName(ALL_NO_NS, "shadowrootcustomelementregistry", "shadowrootcustomelementregistry", "shadowrootcustomelementregistry", "shadowrootcustomelementregistry", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SHADOWROOTDELEGATESFOCUS = new AttributeName(ALL_NO_NS, "shadowrootdelegatesfocus", "shadowrootdelegatesfocus", "shadowrootdelegatesfocus", "shadowrootdelegatesfocus", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName SHADOWROOTSLOTASSIGNMENT = new AttributeName(ALL_NO_NS, "shadowrootslotassignment", "shadowrootslotassignment", "shadowrootslotassignment", "shadowrootslotassignment", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName WORD_SPACING = new AttributeName(ALL_NO_NS, "word-spacing", "word-spacing", "word-spacing", "word-spacing", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName ACCENTUNDER = new AttributeName(ALL_NO_NS, "accentunder", "accentunder", "accentunder", "accentunder", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName ACCEPT_CHARSET = new AttributeName(ALL_NO_NS, "accept-charset", "accept-charset", "accept-charset", "accept-charset", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -876,9 +925,7 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName SPREADMETHOD = new AttributeName(ALL_NO_NS, "spreadmethod", "spreadmethod", "spreadMethod", "spreadmethod", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SELECTION = new AttributeName(ALL_NO_NS, "selection", "selection", "selection", "selection", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName SIZE = new AttributeName(ALL_NO_NS, "size", "size", "size", "size", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName TYPE = new AttributeName(ALL_NO_NS, "type", "type", "type", "type", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED);
public static final AttributeName DIFFUSECONSTANT = new AttributeName(ALL_NO_NS, "diffuseconstant", "diffuseconstant", "diffuseConstant", "diffuseconstant", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName HREF = new AttributeName(ALL_NO_NS, "href", "href", "href", "href", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName HREFLANG = new AttributeName(ALL_NO_NS, "hreflang", "hreflang", "hreflang", "hreflang", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName ONAFTERPRINT = new AttributeName(ALL_NO_NS, "onafterprint", "onafterprint", "onafterprint", "onafterprint", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName PROFILE = new AttributeName(ALL_NO_NS, "profile", "profile", "profile", "profile", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -1111,7 +1158,6 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName CURSOR = new AttributeName(ALL_NO_NS, "cursor", "cursor", "cursor", "cursor", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName CLOSURE = new AttributeName(ALL_NO_NS, "closure", "closure", "closure", "closure", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName CLOSE = new AttributeName(ALL_NO_NS, "close", "close", "close", "close", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
- public static final AttributeName CLASS = new AttributeName(ALL_NO_NS, "class", "class", "class", "class", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName IS = new AttributeName(ALL_NO_NS, "is", "is", "is", "is", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName KEYSYSTEM = new AttributeName(ALL_NO_NS, "keysystem", "keysystem", "keysystem", "keysystem", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName KEYSPLINES = new AttributeName(ALL_NO_NS, "keysplines", "keysplines", "keySplines", "keysplines", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -1185,7 +1231,6 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName REQUIREDEXTENSIONS = new AttributeName(ALL_NO_NS, "requiredextensions", "requiredextensions", "requiredExtensions", "requiredextensions", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName VALUES = new AttributeName(ALL_NO_NS, "values", "values", "values", "values", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName VALUETYPE = new AttributeName(ALL_NO_NS, "valuetype", "valuetype", "valuetype", "valuetype", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED);
- public static final AttributeName VALUE = new AttributeName(ALL_NO_NS, "value", "value", "value", "value", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName ELEVATION = new AttributeName(ALL_NO_NS, "elevation", "elevation", "elevation", "elevation", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName VIEWTARGET = new AttributeName(ALL_NO_NS, "viewtarget", "viewtarget", "viewTarget", "viewtarget", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName VIEWBOX = new AttributeName(ALL_NO_NS, "viewbox", "viewbox", "viewBox", "viewbox", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -1201,133 +1246,133 @@ boolean equalsAnother(AttributeName another) {
public static final AttributeName RY = new AttributeName(ALL_NO_NS, "ry", "ry", "ry", "ry", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
public static final AttributeName REFY = new AttributeName(ALL_NO_NS, "refy", "refy", "refY", "refy", ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {
- MARKERWIDTH,
- BASELINE_SHIFT,
- SHAPE,
+ AMPLITUDE,
+ BASELINE,
+ TEMPLATE,
CLEAR,
- PROFILE,
- XLINK_SHOW,
- FONT_WEIGHT,
+ ALIGNMENT_BASELINE,
+ AUTOCOMPLETE,
+ FONT_VARIANT,
ARIA_DISABLED,
- OPACITY,
- ONMESSAGE,
- ONCHANGE,
- ZOOMANDPAN,
- ONMOUSEOUT,
- CLASSID,
- ACCUMULATE,
+ SPACING,
+ ONBEFOREPRINT,
+ ACTIONTYPE,
+ EVENT,
+ RQUOTE,
+ CLOSURE,
+ COLUMNWIDTH,
Y,
ARIA_MULTISELECTABLE,
ROTATE,
- SHADOWROOTCLONABLE,
- INTERCEPT,
- ROLE,
- MARGINHEIGHT,
- OPTIMUM,
- SCALE,
- POINTSATX,
- FLOOD_OPACITY,
- CLIP_RULE,
- ONDRAGENTER,
- ROWSPAN,
- ONSTART,
- VALUE,
+ SRCDOC,
+ LINEBREAK,
+ REPEATDUR,
+ TARGET,
+ SCRIPTSIZEMULTIPLIER,
+ AZIMUTH,
+ STANDBY,
+ ONLOAD,
+ DISPLAYSTYLE,
+ ONDRAGDROP,
+ VERSION,
+ PATTERNCONTENTUNITS,
+ FX,
MIN,
K3,
ARIA_CHANNEL,
ARIA_VALUENOW,
LOCAL,
ONABORT,
- HIDDEN,
- WORD_SPACING,
- DEFER,
- ONBEFOREUNLOAD,
- ONKEYPRESS,
- SPREADMETHOD,
- IMAGESIZES,
- HIGH,
- BEGIN,
- VISIBILITY,
- FILL_RULE,
- FRAMESPACING,
- KERNELUNITLENGTH,
- WHEN,
- COLOR_PROFILE,
- ONFOCUSIN,
- STROKE_LINEJOIN,
- HTTP_EQUIV,
- ATTRIBUTETYPE,
- ONDRAGSTART,
- KEYSYSTEM,
- CONTROLS,
- FONTSIZE,
- SYSTEMLANGUAGE,
- ONSUBMIT,
- REFX,
- END,
- SRC,
- Y1,
- ARIA_GRAB,
- ARIA_REQUIRED,
- ARIA_ATOMIC,
- ARIA_OWNS,
- ARIA_BUSY,
- EQUALCOLUMNS,
- ONDATAAVAILABLE,
- XCHANNELSELECTOR,
- FETCHPRIORITY,
- BORDER,
- RENDERING_INTENT,
- STDDEVIATION,
- ACCENT,
- CODE,
- EDGE,
- LINETHICKNESS,
- ORDER,
- ORIENTATION,
- ONRESIZE,
- SIZES,
- DIFFUSECONSTANT,
- ALIGNMENT_BASELINE,
+ LOADING,
+ ACCEPT_CHARSET,
+ DIRECTION,
+ OBJECT,
+ ONBEFORECUT,
+ SIZE,
LANG,
- TARGET,
MATHVARIANT,
- ACTIONTYPE,
LIMITINGCONEANGLE,
- SCRIPTSIZEMULTIPLIER,
MARKERHEIGHT,
- AMPLITUDE,
ONCLICK,
- AZIMUTH,
PRIMITIVEUNITS,
- EVENT,
ONEND,
- STANDBY,
XLINK_ARCROLE,
- AUTOCOMPLETE,
COLOR_INTERPOLATION_FILTERS,
- ONLOAD,
ONMOUSELEAVE,
- RQUOTE,
STROKE_WIDTH,
- DISPLAYSTYLE,
SCOPED,
- TEMPLATE,
CHARSET,
- ONDRAGDROP,
AS,
- CLOSURE,
- MINSIZE,
- SUBSCRIPTSHIFT,
- ENCTYPE,
- FONT_FAMILY,
- LIST,
- PATTERNUNITS,
- TEXTLENGTH,
- COLUMNSPACING,
- RESULT,
- CX,
- FY,
+ OFFSET,
+ FONT_STRETCH,
+ MULTIPLE,
+ TEXT,
+ REQUIREDEXTENSIONS,
+ DY,
+ END,
+ SRC,
+ Y1,
+ ARIA_GRAB,
+ ARIA_REQUIRED,
+ ARIA_ATOMIC,
+ ARIA_OWNS,
+ ARIA_BUSY,
+ EQUALCOLUMNS,
+ ONDATAAVAILABLE,
+ XCHANNELSELECTOR,
+ NONCE,
+ GRADIENTTRANSFORM,
+ SEED,
+ SHADOWROOTCUSTOMELEMENTREGISTRY,
+ BEVELLED,
+ CODEBASE,
+ FACE,
+ NAME,
+ ONRESET,
+ ONSELECTSTART,
+ REFERRERPOLICY,
+ STRETCHY,
+ PROFILE,
+ IMAGESIZES,
+ MARGINHEIGHT,
+ HIGH,
+ ONCHANGE,
+ BEGIN,
+ OPTIMUM,
+ VISIBILITY,
+ MARKERWIDTH,
+ FILL_RULE,
+ SCALE,
+ FRAMESPACING,
+ ZOOMANDPAN,
+ KERNELUNITLENGTH,
+ POINTSATX,
+ WHEN,
+ XLINK_SHOW,
+ COLOR_PROFILE,
+ FLOOD_OPACITY,
+ ONFOCUSIN,
+ ONMOUSEOUT,
+ STROKE_LINEJOIN,
+ CLIP_RULE,
+ HTTP_EQUIV,
+ SHAPE,
+ ATTRIBUTETYPE,
+ ONDRAGENTER,
+ ONDRAGSTART,
+ CLASSID,
+ KEYSPLINES,
+ ROWSPACING,
+ CONTENT,
+ FONTSTYLE,
+ FONT_SIZE,
+ POSTER,
+ TEXT_RENDERING,
+ COLUMNSPAN,
+ ONCUT,
+ VIEWTARGET,
+ BY,
+ RY,
DIR,
IN2,
REL,
@@ -1350,31 +1395,30 @@ boolean equalsAnother(AttributeName another) {
RSPACE,
SEPARATORS,
ENABLE_BACKGROUND,
- CHECKED,
- ONSCROLL,
- SPECULAREXPONENT,
- GRADIENTTRANSFORM,
- LOADING,
- SEED,
- SRCDOC,
- SHADOWROOTCUSTOMELEMENTREGISTRY,
- ACCEPT_CHARSET,
- BEVELLED,
- BASELINE,
- CODEBASE,
- DIRECTION,
- FACE,
- LINEBREAK,
- NAME,
- OBJECT,
- ONRESET,
- ONBEFOREPRINT,
- ONSELECTSTART,
- ONBEFORECUT,
- REFERRERPOLICY,
- REPEATDUR,
- STRETCHY,
- SIZE,
+ FENCE,
+ ONACTIVATE,
+ SPECULARCONSTANT,
+ HIDDEN,
+ RENDERING_INTENT,
+ SHADOWROOTCLONABLE,
+ STDDEVIATION,
+ WORD_SPACING,
+ ACCENT,
+ BASELINE_SHIFT,
+ CODE,
+ DEFER,
+ EDGE,
+ INTERCEPT,
+ LINETHICKNESS,
+ ONBEFOREUNLOAD,
+ ORDER,
+ ONMESSAGE,
+ ORIENTATION,
+ ONKEYPRESS,
+ ONRESIZE,
+ ROLE,
+ SIZES,
+ SPREADMETHOD,
HREFLANG,
XREF,
DRAGGABLE,
@@ -1433,28 +1477,29 @@ boolean equalsAnother(AttributeName another) {
STARTOFFSET,
BIAS,
COLS,
- CLASS,
- LOWSRC,
- PRESERVEALPHA,
- ROWS,
- ALTTEXT,
- CONTEXTMENU,
- FILTER,
- FONT_STYLE,
- FONT_SIZE_ADJUST,
- KEYTIMES,
- RT,
- PATTERNTRANSFORM,
- RESTART,
- TEXT_DECORATION,
- WRITING_MODE,
- COLUMNLINES,
- GROUPALIGN,
- REQUIRED,
- VALUES,
- VIEWTARGET,
- FX,
+ IS,
+ MAXSIZE,
+ PRESERVEASPECTRATIO,
+ SRCSET,
+ CONTENTEDITABLE,
+ DEPTH,
+ FONTWEIGHT,
+ FONTFAMILY,
+ FILTERUNITS,
+ LETTER_SPACING,
+ ONSTOP,
+ PATTERN,
+ STITCHTILES,
+ TEXT_ANCHOR,
+ WIDTH,
+ COLUMNALIGN,
+ INPUTMODE,
+ REQUIREDFEATURES,
+ VALUETYPE,
+ CX,
+ REFX,
CY,
+ FY,
REFY,
ALT,
DUR,
@@ -1501,12 +1546,11 @@ boolean equalsAnother(AttributeName another) {
YCHANNELSELECTOR,
ONDBLCLICK,
CALCMODE,
- FENCE,
- NONCE,
- ONACTIVATE,
- SPACING,
- SPECULARCONSTANT,
- ID,
+ FETCHPRIORITY,
+ ONSCROLL,
+ OPACITY,
+ SPECULAREXPONENT,
+ BORDER,
GRADIENTUNITS,
HEADERS,
READONLY,
@@ -1549,8 +1593,7 @@ boolean equalsAnother(AttributeName another) {
SUPERSCRIPTSHIFT,
SCHEME,
SELECTION,
- TYPE,
- HREF,
+ DIFFUSECONSTANT,
ONAFTERPRINT,
SURFACESCALE,
ALIGN,
@@ -1667,179 +1710,175 @@ boolean equalsAnother(AttributeName another) {
CROSSORIGIN,
CURSOR,
CLOSE,
- IS,
- KEYSPLINES,
- MAXSIZE,
- OFFSET,
- PRESERVEASPECTRATIO,
- ROWSPACING,
- SRCSET,
- VERSION,
- CONTENTEDITABLE,
- CONTENT,
- DEPTH,
- FONT_STRETCH,
- FONTWEIGHT,
- FONTSTYLE,
- FONTFAMILY,
- FONT_VARIANT,
- FILTERUNITS,
- FONT_SIZE,
- LETTER_SPACING,
- MULTIPLE,
- ONSTOP,
- POSTER,
- PATTERN,
- PATTERNCONTENTUNITS,
- STITCHTILES,
- TEXT_RENDERING,
- TEXT_ANCHOR,
- TEXT,
- WIDTH,
- COLUMNSPAN,
- COLUMNALIGN,
- COLUMNWIDTH,
- INPUTMODE,
- ONCUT,
- REQUIREDFEATURES,
- REQUIREDEXTENSIONS,
- VALUETYPE,
+ KEYSYSTEM,
+ LOWSRC,
+ MINSIZE,
+ PRESERVEALPHA,
+ ROWSPAN,
+ ROWS,
+ SUBSCRIPTSHIFT,
+ ALTTEXT,
+ CONTROLS,
+ CONTEXTMENU,
+ ENCTYPE,
+ FILTER,
+ FONT_WEIGHT,
+ FONT_STYLE,
+ FONT_FAMILY,
+ FONT_SIZE_ADJUST,
+ FONTSIZE,
+ KEYTIMES,
+ LIST,
+ RT,
+ ONSTART,
+ PATTERNTRANSFORM,
+ PATTERNUNITS,
+ RESTART,
+ SYSTEMLANGUAGE,
+ TEXT_DECORATION,
+ TEXTLENGTH,
+ WRITING_MODE,
+ ACCUMULATE,
+ COLUMNLINES,
+ COLUMNSPACING,
+ GROUPALIGN,
+ ONSUBMIT,
+ REQUIRED,
+ RESULT,
+ VALUES,
ELEVATION,
VIEWBOX,
DX,
RX,
- BY,
- DY,
- RY,
};
private final static int[] ATTRIBUTE_HASHES = {
- 1854474395,
- 1747839118,
- 1941438085,
+ 1864698185,
+ 1747939528,
+ 1942026440,
1681174213,
- 1772032615,
- 1910527802,
- 2001634459,
+ 1780975314,
+ 1915295948,
+ 2001732764,
1680165421,
- 1721347639,
- 1754647353,
- 1804978712,
- 1894552650,
- 1922679386,
- 1983266615,
- 2015950026,
+ 1723309623,
+ 1754792749,
+ 1814558026,
+ 1900548965,
+ 1924206934,
+ 1983416119,
+ 2017010843,
71827457,
1680282148,
1689324870,
- 1740045858,
- 1751679545,
- 1756302628,
- 1787193500,
- 1822002839,
- 1874261045,
- 1906419001,
- 1917953597,
- 1932986153,
- 1972744939,
- 1991021879,
- 2006516551,
- 2026975253,
+ 1740096054,
+ 1752985897,
+ 1756471625,
+ 1790814502,
+ 1823841492,
+ 1881750231,
+ 1907701479,
+ 1922319046,
+ 1933508940,
+ 1972904522,
+ 1993343287,
+ 2007064819,
+ 2066743298,
57205395,
911736834,
1680181996,
1680368221,
1685882101,
1704526375,
- 1734182982,
- 1742183484,
- 1748869205,
- 1754546894,
- 1754872618,
- 1756874572,
- 1785051290,
- 1801312388,
- 1814986837,
- 1825677514,
- 1867448617,
- 1884267068,
- 1903759600,
- 1909819252,
- 1916210285,
- 1922470745,
- 1924570799,
- 1935597338,
- 1965561677,
- 1972962123,
- 1987410233,
- 2000125224,
- 2001898808,
- 2008408414,
- 2023146024,
- 2075005220,
- 53006051,
- 60345635,
- 885522434,
- 1680095865,
- 1680165533,
- 1680229115,
- 1680343801,
- 1680437801,
- 1682440540,
- 1687620127,
- 1692408896,
- 1716623661,
- 1731048742,
- 1739583824,
- 1740119884,
- 1747446838,
- 1748306996,
- 1749399124,
- 1753297133,
- 1754643237,
- 1754798923,
- 1754958648,
- 1756737685,
- 1765800271,
- 1780975314,
+ 1736416327,
+ 1747299630,
+ 1749027145,
+ 1754606246,
+ 1754907227,
+ 1757053236,
1786740932,
- 1790814502,
1804069019,
- 1814558026,
1820262641,
- 1823841492,
1854302364,
- 1864698185,
1872034503,
- 1881750231,
- 1889633006,
- 1900548965,
- 1905754853,
- 1907701479,
- 1910441773,
- 1915295948,
- 1916337499,
- 1922319046,
- 1922665052,
- 1924206934,
- 1924738716,
- 1933508940,
- 1941253366,
- 1942026440,
- 1966454567,
- 1972904522,
- 1980235778,
- 1983416119,
- 1988788535,
- 1991643278,
- 2001210183,
- 2001710299,
- 2004957380,
- 2007064812,
- 2009141482,
- 2016910397,
- 2024763702,
- 2065170434,
- 2083520514,
+ 1889633006,
+ 1905754853,
+ 1910441773,
+ 1916337499,
+ 1922665052,
+ 1924738716,
+ 1941253366,
+ 1966454567,
+ 1980235778,
+ 1989522022,
+ 2001527900,
+ 2005342360,
+ 2009231684,
+ 2024794274,
+ 2082471938,
+ 53006051,
+ 60345635,
+ 885522434,
+ 1680095865,
+ 1680165533,
+ 1680229115,
+ 1680343801,
+ 1680437801,
+ 1682440540,
+ 1687620127,
+ 1692408896,
+ 1720503541,
+ 1733874289,
+ 1739927860,
+ 1740185423,
+ 1747792072,
+ 1748552744,
+ 1749856356,
+ 1754214628,
+ 1754645079,
+ 1754858317,
+ 1756190926,
+ 1756804936,
+ 1772032615,
+ 1785051290,
+ 1787193500,
+ 1801312388,
+ 1804978712,
+ 1814986837,
+ 1822002839,
+ 1825677514,
+ 1854474395,
+ 1867448617,
+ 1874261045,
+ 1884267068,
+ 1894552650,
+ 1903759600,
+ 1906419001,
+ 1909819252,
+ 1910527802,
+ 1916210285,
+ 1917953597,
+ 1922470745,
+ 1922679386,
+ 1924570799,
+ 1932986153,
+ 1935597338,
+ 1941438085,
+ 1965561677,
+ 1972744939,
+ 1972962123,
+ 1983266615,
+ 1987422362,
+ 1991220282,
+ 2000160071,
+ 2001669449,
+ 2001898809,
+ 2006824246,
+ 2009041198,
+ 2016711994,
+ 2023342821,
+ 2060302634,
+ 2081423362,
+ 2089811970,
52488851,
55077603,
59825747,
@@ -1862,31 +1901,30 @@ boolean equalsAnother(AttributeName another) {
1689048326,
1689839946,
1699185409,
- 1714763319,
- 1721189160,
- 1723336432,
- 1733874289,
- 1736416327,
- 1739927860,
- 1740096054,
- 1740185423,
- 1747299630,
- 1747792072,
- 1747939528,
- 1748552744,
- 1749027145,
- 1749856356,
- 1752985897,
- 1754214628,
- 1754606246,
- 1754645079,
- 1754792749,
- 1754858317,
- 1754907227,
- 1756190926,
- 1756471625,
- 1756804936,
- 1757053236,
+ 1716303957,
+ 1721305962,
+ 1723336528,
+ 1734182982,
+ 1739583824,
+ 1740045858,
+ 1740119884,
+ 1742183484,
+ 1747446838,
+ 1747839118,
+ 1748306996,
+ 1748869205,
+ 1749399124,
+ 1751679545,
+ 1753297133,
+ 1754546894,
+ 1754643237,
+ 1754647353,
+ 1754798923,
+ 1754872618,
+ 1754958648,
+ 1756302628,
+ 1756737685,
+ 1756874572,
1767875272,
1776114564,
1782518297,
@@ -1945,28 +1983,29 @@ boolean equalsAnother(AttributeName another) {
1974849131,
1982640164,
1983347764,
- 1983461061,
- 1988132214,
- 1990062797,
- 1991392548,
- 1999273799,
- 2000162011,
- 2001578182,
- 2001669450,
- 2001814704,
- 2004199576,
- 2005925890,
- 2007019632,
- 2008084807,
- 2009071951,
- 2010452700,
- 2016787611,
- 2018908874,
- 2024616088,
- 2026741958,
- 2060302634,
- 2066743298,
+ 1984430082,
+ 1988784439,
+ 1990107683,
+ 1991625270,
+ 2000096287,
+ 2000752725,
+ 2001634458,
+ 2001710298,
+ 2001826027,
+ 2004846654,
+ 2006459190,
+ 2007021895,
+ 2008401563,
+ 2009079867,
+ 2010716309,
+ 2016810187,
+ 2019887833,
+ 2024647008,
+ 2026893641,
+ 2065170434,
+ 2075005220,
2081947650,
+ 2083520514,
2091784484,
50917059,
52489043,
@@ -2013,12 +2052,11 @@ boolean equalsAnother(AttributeName another) {
1692933184,
1704262346,
1714745560,
- 1716303957,
- 1720503541,
- 1721305962,
- 1723309623,
- 1723336528,
- 1732771842,
+ 1716623661,
+ 1721189160,
+ 1721347639,
+ 1723336432,
+ 1731048742,
1733919469,
1734404167,
1739561208,
@@ -2061,8 +2099,7 @@ boolean equalsAnother(AttributeName another) {
1756762256,
1756836998,
1756889417,
- 1757421892,
- 1767725700,
+ 1765800271,
1771569964,
1773606972,
1780879045,
@@ -2179,49 +2216,45 @@ boolean equalsAnother(AttributeName another) {
1983290011,
1983398182,
1983432389,
- 1984430082,
- 1987422362,
- 1988784439,
- 1989522022,
- 1990107683,
- 1991220282,
- 1991625270,
- 1993343287,
- 2000096287,
- 2000160071,
- 2000752725,
- 2001527900,
- 2001634458,
- 2001669449,
- 2001710298,
- 2001732764,
- 2001826027,
- 2001898809,
- 2004846654,
- 2005342360,
- 2006459190,
- 2006824246,
- 2007021895,
- 2007064819,
- 2008401563,
- 2009041198,
- 2009079867,
- 2009231684,
- 2010716309,
- 2016711994,
- 2016810187,
- 2017010843,
- 2019887833,
- 2023342821,
- 2024647008,
- 2024794274,
- 2026893641,
+ 1987410233,
+ 1988132214,
+ 1988788535,
+ 1990062797,
+ 1991021879,
+ 1991392548,
+ 1991643278,
+ 1999273799,
+ 2000125224,
+ 2000162011,
+ 2001210183,
+ 2001578182,
+ 2001634459,
+ 2001669450,
+ 2001710299,
+ 2001814704,
+ 2001898808,
+ 2004199576,
+ 2004957380,
+ 2005925890,
+ 2006516551,
+ 2007019632,
+ 2007064812,
+ 2008084807,
+ 2008408414,
+ 2009071951,
+ 2009141482,
+ 2010452700,
+ 2015950026,
+ 2016787611,
+ 2016910397,
+ 2018908874,
+ 2023146024,
+ 2024616088,
+ 2024763702,
+ 2026741958,
2034765641,
2060474743,
2065694722,
2073034754,
- 2081423362,
- 2082471938,
- 2089811970,
};
}
diff --git a/src/nu/validator/htmlparser/impl/ElementName.java b/src/nu/validator/htmlparser/impl/ElementName.java
index 961570cd..89b48b90 100644
--- a/src/nu/validator/htmlparser/impl/ElementName.java
+++ b/src/nu/validator/htmlparser/impl/ElementName.java
@@ -159,6 +159,59 @@ public final class ElementName
@Inline static ElementName elementNameByBuffer(@NoLength char[] buf,
int length) {
+ if (length == 3) {
+ // `div` is less common on Speedometer 3.1 than lengths 5 and 6, but
+ // surely `div` must be more common on the Web.
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "div")) {
+ return ElementName.DIV;
+ }
+ // Not necessary for Speedometer 3.1 but otherwise obvious
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "img")) {
+ return ElementName.IMG;
+ }
+ } else if (length == 4) {
+ // `span` is less common on Speedometer 3.1 than lengths 5 and 6, but
+ // surely `span` must be more common on the Web.
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "span")) {
+ return ElementName.SPAN;
+ }
+ // Should `link` and `meta` go here for full page loads?
+ } else if (length == 2) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "li")) {
+ return ElementName.LI;
+ }
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "ul")) {
+ return ElementName.UL;
+ }
+ // Other workloads might benefit from `th`, `td`, and `tr` here.
+ } else if (length == 1) {
+ // `a` is less common on Speedometer 3.1 than lengths 5 and 6, but
+ // surely `a` must be more common on the Web.
+ if (buf[0] == 'a') {
+ return ElementName.A;
+ }
+ // Not necessary for Speedometer 3.1 but otherwise obvious
+ if (buf[0] == 'p') {
+ return ElementName.P;
+ }
+ // Other workloads might benefit from `i` and `b` here.
+ } else if (length == 5) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "label")) {
+ return ElementName.LABEL;
+ }
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "input")) {
+ return ElementName.INPUT;
+ }
+ // Should `style` go here for other workloads?
+ } else if (length == 6) {
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "button")) {
+ return ElementName.BUTTON;
+ }
+ if (Portability.bufferStartsWithLiteralAssumeSufficientLength(buf, "strong")) {
+ return ElementName.STRONG;
+ }
+ // Should `script` go here for other workloads?
+ }
@Unsigned int hash = ElementName.bufToHash(buf, length);
int[] hashes;
hashes = ElementName.ELEMENT_HASHES;
@@ -263,6 +316,61 @@ public void destructor() {
// CPPONLY: NS_NewHTMLUnknownElement, NS_NewSVGUnknownElement,
TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
+ public static final ElementName DIV = new ElementName("div", "div",
+ // CPPONLY: NS_NewHTMLDivElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
+
+ public static final ElementName IMG = new ElementName("img", "img",
+ // CPPONLY: NS_NewHTMLImageElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.IMG | SPECIAL);
+
+ public static final ElementName SPAN = new ElementName("span", "span",
+ // CPPONLY: NS_NewHTMLSpanElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
+
+ public static final ElementName LI = new ElementName("li", "li",
+ // CPPONLY: NS_NewHTMLLIElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG);
+
+ public static final ElementName UL = new ElementName("ul", "ul",
+ // CPPONLY: NS_NewHTMLSharedListElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
+
+ public static final ElementName A = new ElementName("a", "a",
+ // CPPONLY: NS_NewHTMLAnchorElement,
+ // CPPONLY: NS_NewSVGAElement,
+ TreeBuilder.A);
+
+ public static final ElementName P = new ElementName("p", "p",
+ // CPPONLY: NS_NewHTMLParagraphElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG);
+
+ public static final ElementName LABEL = new ElementName("label", "label",
+ // CPPONLY: NS_NewHTMLLabelElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.OTHER);
+
+ public static final ElementName INPUT = new ElementName("input", "input",
+ // CPPONLY: NS_NewHTMLInputElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.INPUT | SPECIAL);
+
+ public static final ElementName BUTTON = new ElementName("button", "button",
+ // CPPONLY: NS_NewHTMLButtonElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.BUTTON | SPECIAL);
+
+ public static final ElementName STRONG = new ElementName("strong", "strong",
+ // CPPONLY: NS_NewHTMLElement,
+ // CPPONLY: NS_NewSVGUnknownElement,
+ TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
+
// START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
// private static final Pattern HTML_TAG_DEF = Pattern.compile(
@@ -278,6 +386,10 @@ public void destructor() {
//
// private static final Map svgMap = new HashMap();
//
+// private static final String[] HARDCODED_HTML_ELEMENTS = { "input", "strong", "a", "p", "li", "span", "div", "ul", "img", "button", "label" };
+//
+// private static final String[] HARDCODED_SVG_ELEMENTS = { "a" };
+//
// private static void ingestHtmlTags(File htmlList) throws IOException {
// // This doesn't need to be efficient, so let's make it easy to write.
// BufferedReader htmlReader = new BufferedReader(
@@ -312,6 +424,24 @@ public void destructor() {
// }
// }
//
+// private static boolean isHardcodedHtmlElement(String name) {
+// for (int i = 0; i < HARDCODED_HTML_ELEMENTS.length; i++) {
+// if (HARDCODED_HTML_ELEMENTS[i].equals(name)) {
+// return true;
+// }
+// }
+// return false;
+// }
+//
+// private static boolean isHardcodedSvgElement(String name) {
+// for (int i = 0; i < HARDCODED_SVG_ELEMENTS.length; i++) {
+// if (HARDCODED_SVG_ELEMENTS[i].equals(name)) {
+// return true;
+// }
+// }
+// return false;
+// }
+//
// private static void ingestSvgTags(File svgList) throws IOException {
// // This doesn't need to be efficient, so let's make it easy to write.
// BufferedReader svgReader = new BufferedReader(
@@ -645,10 +775,16 @@ public void destructor() {
// System.out.println("};");
//
// for (Entry entry : htmlMap.entrySet()) {
-// System.err.println("Missing HTML element: " + entry.getKey());
+// String n = entry.getKey();
+// if (!isHardcodedHtmlElement(n)) {
+// System.err.println("Missing HTML element: " + n);
+// }
// }
// for (Entry entry : svgMap.entrySet()) {
-// System.err.println("Missing SVG element: " + entry.getKey());
+// String n = entry.getKey();
+// if (!isHardcodedSvgElement(n)) {
+// System.err.println("Missing SVG element: " + entry.getKey());
+// }
// }
// }
@@ -681,14 +817,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLSharedElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY | SPECIAL);
-public static final ElementName DIV = new ElementName("div", "div",
-// CPPONLY: NS_NewHTMLDivElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
-public static final ElementName IMG = new ElementName("img", "img",
-// CPPONLY: NS_NewHTMLImageElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.IMG | SPECIAL);
public static final ElementName INS = new ElementName("ins", "ins",
// CPPONLY: NS_NewHTMLModElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -709,10 +837,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLPreElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.PRE_OR_LISTING | SPECIAL);
-public static final ElementName A = new ElementName("a", "a",
-// CPPONLY: NS_NewHTMLAnchorElement,
-// CPPONLY: NS_NewSVGAElement,
-TreeBuilder.A);
public static final ElementName B = new ElementName("b", "b",
// CPPONLY: NS_NewHTMLElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -761,10 +885,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
-public static final ElementName P = new ElementName("p", "p",
-// CPPONLY: NS_NewHTMLParagraphElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG);
public static final ElementName Q = new ElementName("q", "q",
// CPPONLY: NS_NewHTMLSharedElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1025,10 +1145,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLPreElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.PRE_OR_LISTING | SPECIAL);
-public static final ElementName STRONG = new ElementName("strong", "strong",
-// CPPONLY: NS_NewHTMLElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph",
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1069,10 +1185,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGTextPathElement,
TreeBuilder.OTHER);
-public static final ElementName LI = new ElementName("li", "li",
-// CPPONLY: NS_NewHTMLLIElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG);
public static final ElementName MI = new ElementName("mi", "mi",
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1109,14 +1221,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLSharedListElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
-public static final ElementName LABEL = new ElementName("label", "label",
-// CPPONLY: NS_NewHTMLLabelElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.OTHER);
-public static final ElementName UL = new ElementName("ul", "ul",
-// CPPONLY: NS_NewHTMLSharedListElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
public static final ElementName SMALL = new ElementName("small", "small",
// CPPONLY: NS_NewHTMLElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1153,10 +1257,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGAnimateMotionElement,
TreeBuilder.OTHER);
-public static final ElementName BUTTON = new ElementName("button", "button",
-// CPPONLY: NS_NewHTMLButtonElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.BUTTON | SPECIAL);
public static final ElementName CAPTION = new ElementName("caption", "caption",
// CPPONLY: NS_NewHTMLTableCaptionElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1189,10 +1289,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGPatternElement,
TreeBuilder.OTHER);
-public static final ElementName SPAN = new ElementName("span", "span",
-// CPPONLY: NS_NewHTMLSpanElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
public static final ElementName SECTION = new ElementName("section", "section",
// CPPONLY: NS_NewHTMLElement,
// CPPONLY: NS_NewSVGUnknownElement,
@@ -1377,10 +1473,6 @@ public void destructor() {
// CPPONLY: NS_NewHTMLFontElement,
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.FONT);
-public static final ElementName INPUT = new ElementName("input", "input",
-// CPPONLY: NS_NewHTMLInputElement,
-// CPPONLY: NS_NewSVGUnknownElement,
-TreeBuilder.INPUT | SPECIAL);
public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient",
// CPPONLY: NS_NewHTMLUnknownElement,
// CPPONLY: NS_NewSVGLinearGradientElement,
@@ -1486,62 +1578,62 @@ public void destructor() {
// CPPONLY: NS_NewSVGUnknownElement,
TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
private final static @NoLength ElementName[] ELEMENT_NAMES = {
-FIGCAPTION,
-CITE,
-FEOFFSET,
-H1,
-CLIPPATH,
+AUDIO,
+FEIMAGE,
+FRAMESET,
+H5,
+TH,
METER,
SELECT,
-B,
-BGSOUND,
-SOURCE,
-DL,
-RP,
-PROGRESS,
-NOSCRIPT,
-VIEW,
-DIV,
-G,
-FEFUNCA,
-THEAD,
-FIGURE,
-GLYPHREF,
-TEXTPATH,
+SVG,
+HEAD,
+TITLE,
ANIMATETRANSFORM,
-SECTION,
HR,
-DEFS,
-DATALIST,
-FONT,
-PLAINTEXT,
-TFOOT,
-FEMORPHOLOGY,
-COL,
-MAP,
-SUP,
-P,
-H5,
+NOFRAMES,
+NOSCRIPT,
+VIEW,
+INS,
+I,
FEFUNCB,
-HEAD,
BASE,
-FEIMAGE,
LINE,
-TITLE,
FESPECULARLIGHTING,
-PATH,
-MARK,
-UL,
-PARAM,
-OPTION,
-VIDEO,
-BR,
+MASK,
+MN,
+SAMP,
FOOTER,
-ADDRESS,
-MS,
-APPLET,
-FIELDSET,
-FEPOINTLIGHT,
+CANVAS,
+BASEFONT,
+FEDISTANTLIGHT,
+PLAINTEXT,
+TFOOT,
+FEMORPHOLOGY,
+COL,
+PRE,
+VAR,
+H1,
+FEFUNCA,
+BGSOUND,
+THEAD,
+CITE,
+FIGURE,
+SOURCE,
+GLYPHREF,
+MGLYPH,
+MI,
+OL,
+PARAM,
+POLYGON,
+FEDISPLACEMENTMAP,
+ANIMATECOLOR,
+FECOMPONENTTRANSFER,
+HEADER,
+TR,
+DETAILS,
+DT,
+FOREIGNOBJECT,
+FESPOTLIGHT,
LINEARGRADIENT,
OBJECT,
RECT,
@@ -1551,11 +1643,10 @@ public void destructor() {
SUMMARY,
BDI,
DFN,
-INS,
-PRE,
-SUB,
-USE,
-XMP,
+MAP,
+RTC,
+SET,
+WBR,
S,
H3,
AREA,
@@ -1572,34 +1663,35 @@ public void destructor() {
STYLE,
TEMPLATE,
FEFUNCG,
-STRONG,
-MATH,
-SEARCH,
-MI,
-MASK,
-OL,
+ALTGLYPH,
+MPATH,
+SWITCH,
+MARK,
+DL,
SYMBOL,
EM,
-BUTTON,
-KEYGEN,
-PATTERN,
-AUDIO,
-FEDISPLACEMENTMAP,
-SAMP,
-ANIMATECOLOR,
-FECOMPONENTTRANSFER,
-HEADER,
-TR,
-CANVAS,
-DETAILS,
-NOFRAMES,
-DT,
-BASEFONT,
-FOREIGNOBJECT,
-FRAMESET,
-FESPOTLIGHT,
-FEDISTANTLIGHT,
-INPUT,
+CAPTION,
+MAIN,
+SECTION,
+VIDEO,
+RP,
+BR,
+CENTER,
+FEFUNCR,
+FILTER,
+FEGAUSSIANBLUR,
+MARKER,
+NOBR,
+ADDRESS,
+DEFS,
+MS,
+PROGRESS,
+APPLET,
+DATALIST,
+FIELDSET,
+FEOFFSET,
+FEPOINTLIGHT,
+FONT,
MTEXT,
RT,
OUTPUT,
@@ -1617,16 +1709,14 @@ public void destructor() {
BDO,
DEL,
DIR,
-IMG,
KBD,
NAV,
-A,
-RTC,
-SVG,
-SET,
-VAR,
-WBR,
-I,
+B,
+SUB,
+SUP,
+USE,
+G,
+XMP,
Q,
U,
H2,
@@ -1660,27 +1750,24 @@ public void destructor() {
DIALOG,
FEDIFFUSELIGHTING,
LISTING,
-ALTGLYPH,
-MGLYPH,
-MPATH,
-TH,
-SWITCH,
-LI,
+CLIPPATH,
+MATH,
+PATH,
+SEARCH,
+TEXTPATH,
LINK,
MALIGNMARK,
TRACK,
HTML,
-LABEL,
SMALL,
ALTGLYPHITEM,
ACRONYM,
FORM,
ANIMATEMOTION,
-CAPTION,
-MN,
-MAIN,
-POLYGON,
-SPAN,
+FIGCAPTION,
+KEYGEN,
+OPTION,
+PATTERN,
TSPAN,
MO,
COLGROUP,
@@ -1688,70 +1775,64 @@ public void destructor() {
OPTGROUP,
STOP,
ABBR,
-CENTER,
-FEFUNCR,
-FILTER,
-FEGAUSSIANBLUR,
-MARKER,
-NOBR,
};
private final static int[] ELEMENT_HASHES = {
-1900845386,
-1748359220,
-2001349736,
-876609538,
-1798686984,
+1914900309,
+1749715159,
+2001349720,
+943718402,
+1805647874,
1971465813,
2008125638,
-59768833,
-1730965751,
-1756474198,
-1864368130,
-1938817026,
-1990037800,
-2005719336,
-2060065124,
-52490899,
-62390273,
-1682547543,
-1740181637,
-1749905526,
-1766992520,
-1807599880,
+60347747,
+1733890180,
+1757146773,
1881498736,
-1907661127,
1967128578,
-1983533124,
-2000525512,
-2001495140,
-2006896969,
-2008851557,
-2085266636,
-51961587,
-57206291,
-60352339,
-67108865,
-943718402,
+1988763672,
+2005719336,
+2060065124,
+55110883,
+63438849,
1699324759,
-1733890180,
1747814436,
-1749715159,
1752979652,
-1757146773,
1783388498,
-1805502724,
-1854228692,
-1873281026,
-1889085973,
-1905563974,
-1925844629,
-1963982850,
+1854245076,
+1902641154,
+1941178676,
1967795958,
-1982173479,
-1986527234,
-1998724870,
-2001349704,
-2001392796,
+1982935782,
+1999397992,
+2001392798,
+2006896969,
+2008851557,
+2085266636,
+51961587,
+58773795,
+61925907,
+876609538,
+1682547543,
+1730965751,
+1740181637,
+1748359220,
+1749905526,
+1756474198,
+1766992520,
+1803876550,
+1818755074,
+1870135298,
+1889085973,
+1906087319,
+1934172497,
+1965334268,
+1967788867,
+1968836118,
+1973420034,
+1983633431,
+1998585858,
+2001309869,
+2001392795,
2004635806,
2006028454,
2007601444,
@@ -1761,11 +1842,10 @@ public void destructor() {
2092255447,
51435587,
52486755,
-55110883,
-58773795,
-60345171,
-61395251,
-62973651,
+57206291,
+59821379,
+60354131,
+62450211,
68681729,
910163970,
1679960596,
@@ -1782,34 +1862,35 @@ public void destructor() {
1756625221,
1757268168,
1783210839,
-1790207270,
-1803929812,
-1806805526,
-1818755074,
-1854245076,
-1870135298,
+1797585096,
+1803929861,
+1806806678,
+1854228692,
+1864368130,
1874102998,
1881669634,
-1898753862,
-1903302038,
-1906135367,
-1914900309,
-1934172497,
-1941178676,
-1965334268,
-1967788867,
-1968836118,
-1973420034,
-1982935782,
-1983633431,
-1988763672,
-1998585858,
-1999397992,
-2001309869,
-2001349720,
-2001392795,
-2001392798,
-2003183333,
+1899272519,
+1904412884,
+1907661127,
+1925844629,
+1938817026,
+1963982850,
+1966223078,
+1967760215,
+1967795910,
+1968053806,
+1971461414,
+1971938532,
+1982173479,
+1983533124,
+1986527234,
+1990037800,
+1998724870,
+2000525512,
+2001349704,
+2001349736,
+2001392796,
+2001495140,
2005324101,
2005925890,
2006329158,
@@ -1827,16 +1908,14 @@ public void destructor() {
51438659,
52485715,
52488851,
-55104723,
56151587,
57733651,
-59244545,
-59821379,
-60347747,
-60354131,
-61925907,
-62450211,
-63438849,
+59768833,
+60345171,
+60352339,
+61395251,
+62390273,
+62973651,
67633153,
69730305,
893386754,
@@ -1870,27 +1949,24 @@ public void destructor() {
1782357526,
1783388497,
1786534215,
-1797585096,
-1803876550,
-1803929861,
-1805647874,
-1806806678,
-1818230786,
+1798686984,
+1803929812,
+1805502724,
+1806805526,
+1807599880,
1853642948,
1854228698,
1857653029,
1868312196,
-1870268949,
1874053333,
1881288348,
1881613047,
1884120164,
1898223949,
-1899272519,
-1902641154,
-1904412884,
-1906087319,
-1907435316,
+1900845386,
+1903302038,
+1905563974,
+1906135367,
1907959605,
1919418370,
1932928296,
@@ -1898,11 +1974,5 @@ public void destructor() {
1939219752,
1941221172,
1965115924,
-1966223078,
-1967760215,
-1967795910,
-1968053806,
-1971461414,
-1971938532,
};
}
diff --git a/src/nu/validator/htmlparser/impl/Portability.java b/src/nu/validator/htmlparser/impl/Portability.java
index cde64559..a0bcdc9c 100644
--- a/src/nu/validator/htmlparser/impl/Portability.java
+++ b/src/nu/validator/htmlparser/impl/Portability.java
@@ -151,6 +151,26 @@ public static boolean stringEqualsString(String one, String other) {
return one.equals(other);
}
+ // [NOCPP[
+ public static boolean bufferStartsWithLiteralAssumeSufficientLength(char[] buf, String literal) {
+ for (int i = 0; i < literal.length(); i++) {
+ if (buf[i] != literal.charAt(i)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean bufferStartsWithLiteralAtOffsetAssumeSufficientLength(char[] buf, String literal, int offset) {
+ for (int i = 0; i < literal.length(); i++) {
+ if (buf[offset + i] != literal.charAt(i)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ // ]NOCPP]
+
public static void delete(Object o) {
}
diff --git a/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java b/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java
index dc6569ba..46b2ded3 100644
--- a/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java
+++ b/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java
@@ -128,7 +128,7 @@ public class CppTypes {
private static final String[] FORWARD_DECLARATIONS = { "nsHtml5StreamParser" };
private static final String[] CLASSES_THAT_NEED_SUPPLEMENT = {
- "Tokenizer", "TreeBuilder", "UTF16Buffer", };
+ "Portability", "Tokenizer", "TreeBuilder", "UTF16Buffer" };
private static final String[] STATE_LOOP_POLICIES = {
"nsHtml5ViewSourcePolicy", "nsHtml5LineColPolicy", "nsHtml5FastestPolicy" };
@@ -377,6 +377,10 @@ public String stringForLiteral(String literal) {
return '"' + literal + '"';
}
+ public String utf16StringForLiteral(String literal) {
+ return "u\"" + literal + '"';
+ }
+
public String staticArrayTemplate() {
return "staticJArray";
}
diff --git a/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java b/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java
index 6eadb0ad..e6fc6a08 100755
--- a/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java
+++ b/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java
@@ -1239,6 +1239,8 @@ public void visit(StringLiteralExpr n, LocalSymbolTable arg) {
printer.print(cppTypes.stringForLiteral(val));
} else if ("isQuirky".equals(currentMethod) && "html".equals(val)) {
printer.print(cppTypes.stringForLiteral(val));
+ } else if ("nameByBuffer".equals(currentMethod) || "elementNameByBuffer".equals(currentMethod)) {
+ printer.print(cppTypes.utf16StringForLiteral(val));
} else {
printer.print(cppTypes.localForLiteral(val));
}