summaryrefslogtreecommitdiff
path: root/school/node_modules/parse5/lib/common
diff options
context:
space:
mode:
Diffstat (limited to 'school/node_modules/parse5/lib/common')
-rw-r--r--school/node_modules/parse5/lib/common/doctype.js162
-rw-r--r--school/node_modules/parse5/lib/common/error-codes.js65
-rw-r--r--school/node_modules/parse5/lib/common/foreign-content.js265
-rw-r--r--school/node_modules/parse5/lib/common/html.js272
-rw-r--r--school/node_modules/parse5/lib/common/unicode.js109
5 files changed, 873 insertions, 0 deletions
diff --git a/school/node_modules/parse5/lib/common/doctype.js b/school/node_modules/parse5/lib/common/doctype.js
new file mode 100644
index 0000000..e9dfb67
--- /dev/null
+++ b/school/node_modules/parse5/lib/common/doctype.js
@@ -0,0 +1,162 @@
+'use strict';
+
+const { DOCUMENT_MODE } = require('./html');
+
+//Const
+const VALID_DOCTYPE_NAME = 'html';
+const VALID_SYSTEM_ID = 'about:legacy-compat';
+const QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';
+
+const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [
+ '+//silmaril//dtd html pro v0r11 19970101//',
+ '-//as//dtd html 3.0 aswedit + extensions//',
+ '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',
+ '-//ietf//dtd html 2.0 level 1//',
+ '-//ietf//dtd html 2.0 level 2//',
+ '-//ietf//dtd html 2.0 strict level 1//',
+ '-//ietf//dtd html 2.0 strict level 2//',
+ '-//ietf//dtd html 2.0 strict//',
+ '-//ietf//dtd html 2.0//',
+ '-//ietf//dtd html 2.1e//',
+ '-//ietf//dtd html 3.0//',
+ '-//ietf//dtd html 3.2 final//',
+ '-//ietf//dtd html 3.2//',
+ '-//ietf//dtd html 3//',
+ '-//ietf//dtd html level 0//',
+ '-//ietf//dtd html level 1//',
+ '-//ietf//dtd html level 2//',
+ '-//ietf//dtd html level 3//',
+ '-//ietf//dtd html strict level 0//',
+ '-//ietf//dtd html strict level 1//',
+ '-//ietf//dtd html strict level 2//',
+ '-//ietf//dtd html strict level 3//',
+ '-//ietf//dtd html strict//',
+ '-//ietf//dtd html//',
+ '-//metrius//dtd metrius presentational//',
+ '-//microsoft//dtd internet explorer 2.0 html strict//',
+ '-//microsoft//dtd internet explorer 2.0 html//',
+ '-//microsoft//dtd internet explorer 2.0 tables//',
+ '-//microsoft//dtd internet explorer 3.0 html strict//',
+ '-//microsoft//dtd internet explorer 3.0 html//',
+ '-//microsoft//dtd internet explorer 3.0 tables//',
+ '-//netscape comm. corp.//dtd html//',
+ '-//netscape comm. corp.//dtd strict html//',
+ "-//o'reilly and associates//dtd html 2.0//",
+ "-//o'reilly and associates//dtd html extended 1.0//",
+ "-//o'reilly and associates//dtd html extended relaxed 1.0//",
+ '-//sq//dtd html 2.0 hotmetal + extensions//',
+ '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',
+ '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',
+ '-//spyglass//dtd html 2.0 extended//',
+ '-//sun microsystems corp.//dtd hotjava html//',
+ '-//sun microsystems corp.//dtd hotjava strict html//',
+ '-//w3c//dtd html 3 1995-03-24//',
+ '-//w3c//dtd html 3.2 draft//',
+ '-//w3c//dtd html 3.2 final//',
+ '-//w3c//dtd html 3.2//',
+ '-//w3c//dtd html 3.2s draft//',
+ '-//w3c//dtd html 4.0 frameset//',
+ '-//w3c//dtd html 4.0 transitional//',
+ '-//w3c//dtd html experimental 19960712//',
+ '-//w3c//dtd html experimental 970421//',
+ '-//w3c//dtd w3 html//',
+ '-//w3o//dtd w3 html 3.0//',
+ '-//webtechs//dtd mozilla html 2.0//',
+ '-//webtechs//dtd mozilla html//'
+];
+
+const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([
+ '-//w3c//dtd html 4.01 frameset//',
+ '-//w3c//dtd html 4.01 transitional//'
+]);
+
+const QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];
+const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];
+
+const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([
+ '-//w3c//dtd html 4.01 frameset//',
+ '-//w3c//dtd html 4.01 transitional//'
+]);
+
+//Utils
+function enquoteDoctypeId(id) {
+ const quote = id.indexOf('"') !== -1 ? "'" : '"';
+
+ return quote + id + quote;
+}
+
+function hasPrefix(publicId, prefixes) {
+ for (let i = 0; i < prefixes.length; i++) {
+ if (publicId.indexOf(prefixes[i]) === 0) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+//API
+exports.isConforming = function(token) {
+ return (
+ token.name === VALID_DOCTYPE_NAME &&
+ token.publicId === null &&
+ (token.systemId === null || token.systemId === VALID_SYSTEM_ID)
+ );
+};
+
+exports.getDocumentMode = function(token) {
+ if (token.name !== VALID_DOCTYPE_NAME) {
+ return DOCUMENT_MODE.QUIRKS;
+ }
+
+ const systemId = token.systemId;
+
+ if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {
+ return DOCUMENT_MODE.QUIRKS;
+ }
+
+ let publicId = token.publicId;
+
+ if (publicId !== null) {
+ publicId = publicId.toLowerCase();
+
+ if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {
+ return DOCUMENT_MODE.QUIRKS;
+ }
+
+ let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;
+
+ if (hasPrefix(publicId, prefixes)) {
+ return DOCUMENT_MODE.QUIRKS;
+ }
+
+ prefixes =
+ systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;
+
+ if (hasPrefix(publicId, prefixes)) {
+ return DOCUMENT_MODE.LIMITED_QUIRKS;
+ }
+ }
+
+ return DOCUMENT_MODE.NO_QUIRKS;
+};
+
+exports.serializeContent = function(name, publicId, systemId) {
+ let str = '!DOCTYPE ';
+
+ if (name) {
+ str += name;
+ }
+
+ if (publicId) {
+ str += ' PUBLIC ' + enquoteDoctypeId(publicId);
+ } else if (systemId) {
+ str += ' SYSTEM';
+ }
+
+ if (systemId !== null) {
+ str += ' ' + enquoteDoctypeId(systemId);
+ }
+
+ return str;
+};
diff --git a/school/node_modules/parse5/lib/common/error-codes.js b/school/node_modules/parse5/lib/common/error-codes.js
new file mode 100644
index 0000000..25f3cfd
--- /dev/null
+++ b/school/node_modules/parse5/lib/common/error-codes.js
@@ -0,0 +1,65 @@
+'use strict';
+
+module.exports = {
+ controlCharacterInInputStream: 'control-character-in-input-stream',
+ noncharacterInInputStream: 'noncharacter-in-input-stream',
+ surrogateInInputStream: 'surrogate-in-input-stream',
+ nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',
+ endTagWithAttributes: 'end-tag-with-attributes',
+ endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',
+ unexpectedSolidusInTag: 'unexpected-solidus-in-tag',
+ unexpectedNullCharacter: 'unexpected-null-character',
+ unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',
+ invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',
+ unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',
+ missingEndTagName: 'missing-end-tag-name',
+ unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',
+ unknownNamedCharacterReference: 'unknown-named-character-reference',
+ missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',
+ unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',
+ unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',
+ eofBeforeTagName: 'eof-before-tag-name',
+ eofInTag: 'eof-in-tag',
+ missingAttributeValue: 'missing-attribute-value',
+ missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',
+ missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',
+ missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:
+ 'missing-whitespace-between-doctype-public-and-system-identifiers',
+ missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',
+ missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',
+ missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',
+ missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',
+ missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',
+ abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',
+ abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',
+ cdataInHtmlContent: 'cdata-in-html-content',
+ incorrectlyOpenedComment: 'incorrectly-opened-comment',
+ eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',
+ eofInDoctype: 'eof-in-doctype',
+ nestedComment: 'nested-comment',
+ abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',
+ eofInComment: 'eof-in-comment',
+ incorrectlyClosedComment: 'incorrectly-closed-comment',
+ eofInCdata: 'eof-in-cdata',
+ absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',
+ nullCharacterReference: 'null-character-reference',
+ surrogateCharacterReference: 'surrogate-character-reference',
+ characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',
+ controlCharacterReference: 'control-character-reference',
+ noncharacterCharacterReference: 'noncharacter-character-reference',
+ missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',
+ missingDoctypeName: 'missing-doctype-name',
+ invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',
+ duplicateAttribute: 'duplicate-attribute',
+ nonConformingDoctype: 'non-conforming-doctype',
+ missingDoctype: 'missing-doctype',
+ misplacedDoctype: 'misplaced-doctype',
+ endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',
+ closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',
+ disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',
+ openElementsLeftAfterEof: 'open-elements-left-after-eof',
+ abandonedHeadElementChild: 'abandoned-head-element-child',
+ misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',
+ nestedNoscriptInHead: 'nested-noscript-in-head',
+ eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'
+};
diff --git a/school/node_modules/parse5/lib/common/foreign-content.js b/school/node_modules/parse5/lib/common/foreign-content.js
new file mode 100644
index 0000000..10f008b
--- /dev/null
+++ b/school/node_modules/parse5/lib/common/foreign-content.js
@@ -0,0 +1,265 @@
+'use strict';
+
+const Tokenizer = require('../tokenizer');
+const HTML = require('./html');
+
+//Aliases
+const $ = HTML.TAG_NAMES;
+const NS = HTML.NAMESPACES;
+const ATTRS = HTML.ATTRS;
+
+//MIME types
+const MIME_TYPES = {
+ TEXT_HTML: 'text/html',
+ APPLICATION_XML: 'application/xhtml+xml'
+};
+
+//Attributes
+const DEFINITION_URL_ATTR = 'definitionurl';
+const ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';
+const SVG_ATTRS_ADJUSTMENT_MAP = {
+ attributename: 'attributeName',
+ attributetype: 'attributeType',
+ basefrequency: 'baseFrequency',
+ baseprofile: 'baseProfile',
+ calcmode: 'calcMode',
+ clippathunits: 'clipPathUnits',
+ diffuseconstant: 'diffuseConstant',
+ edgemode: 'edgeMode',
+ filterunits: 'filterUnits',
+ glyphref: 'glyphRef',
+ gradienttransform: 'gradientTransform',
+ gradientunits: 'gradientUnits',
+ kernelmatrix: 'kernelMatrix',
+ kernelunitlength: 'kernelUnitLength',
+ keypoints: 'keyPoints',
+ keysplines: 'keySplines',
+ keytimes: 'keyTimes',
+ lengthadjust: 'lengthAdjust',
+ limitingconeangle: 'limitingConeAngle',
+ markerheight: 'markerHeight',
+ markerunits: 'markerUnits',
+ markerwidth: 'markerWidth',
+ maskcontentunits: 'maskContentUnits',
+ maskunits: 'maskUnits',
+ numoctaves: 'numOctaves',
+ pathlength: 'pathLength',
+ patterncontentunits: 'patternContentUnits',
+ patterntransform: 'patternTransform',
+ patternunits: 'patternUnits',
+ pointsatx: 'pointsAtX',
+ pointsaty: 'pointsAtY',
+ pointsatz: 'pointsAtZ',
+ preservealpha: 'preserveAlpha',
+ preserveaspectratio: 'preserveAspectRatio',
+ primitiveunits: 'primitiveUnits',
+ refx: 'refX',
+ refy: 'refY',
+ repeatcount: 'repeatCount',
+ repeatdur: 'repeatDur',
+ requiredextensions: 'requiredExtensions',
+ requiredfeatures: 'requiredFeatures',
+ specularconstant: 'specularConstant',
+ specularexponent: 'specularExponent',
+ spreadmethod: 'spreadMethod',
+ startoffset: 'startOffset',
+ stddeviation: 'stdDeviation',
+ stitchtiles: 'stitchTiles',
+ surfacescale: 'surfaceScale',
+ systemlanguage: 'systemLanguage',
+ tablevalues: 'tableValues',
+ targetx: 'targetX',
+ targety: 'targetY',
+ textlength: 'textLength',
+ viewbox: 'viewBox',
+ viewtarget: 'viewTarget',
+ xchannelselector: 'xChannelSelector',
+ ychannelselector: 'yChannelSelector',
+ zoomandpan: 'zoomAndPan'
+};
+
+const XML_ATTRS_ADJUSTMENT_MAP = {
+ 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },
+ 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },
+ 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },
+ 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },
+ 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },
+ 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },
+ 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },
+ 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },
+ 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },
+ 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },
+ xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },
+ 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }
+};
+
+//SVG tag names adjustment map
+const SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {
+ altglyph: 'altGlyph',
+ altglyphdef: 'altGlyphDef',
+ altglyphitem: 'altGlyphItem',
+ animatecolor: 'animateColor',
+ animatemotion: 'animateMotion',
+ animatetransform: 'animateTransform',
+ clippath: 'clipPath',
+ feblend: 'feBlend',
+ fecolormatrix: 'feColorMatrix',
+ fecomponenttransfer: 'feComponentTransfer',
+ fecomposite: 'feComposite',
+ feconvolvematrix: 'feConvolveMatrix',
+ fediffuselighting: 'feDiffuseLighting',
+ fedisplacementmap: 'feDisplacementMap',
+ fedistantlight: 'feDistantLight',
+ feflood: 'feFlood',
+ fefunca: 'feFuncA',
+ fefuncb: 'feFuncB',
+ fefuncg: 'feFuncG',
+ fefuncr: 'feFuncR',
+ fegaussianblur: 'feGaussianBlur',
+ feimage: 'feImage',
+ femerge: 'feMerge',
+ femergenode: 'feMergeNode',
+ femorphology: 'feMorphology',
+ feoffset: 'feOffset',
+ fepointlight: 'fePointLight',
+ fespecularlighting: 'feSpecularLighting',
+ fespotlight: 'feSpotLight',
+ fetile: 'feTile',
+ feturbulence: 'feTurbulence',
+ foreignobject: 'foreignObject',
+ glyphref: 'glyphRef',
+ lineargradient: 'linearGradient',
+ radialgradient: 'radialGradient',
+ textpath: 'textPath'
+});
+
+//Tags that causes exit from foreign content
+const EXITS_FOREIGN_CONTENT = {
+ [$.B]: true,
+ [$.BIG]: true,
+ [$.BLOCKQUOTE]: true,
+ [$.BODY]: true,
+ [$.BR]: true,
+ [$.CENTER]: true,
+ [$.CODE]: true,
+ [$.DD]: true,
+ [$.DIV]: true,
+ [$.DL]: true,
+ [$.DT]: true,
+ [$.EM]: true,
+ [$.EMBED]: true,
+ [$.H1]: true,
+ [$.H2]: true,
+ [$.H3]: true,
+ [$.H4]: true,
+ [$.H5]: true,
+ [$.H6]: true,
+ [$.HEAD]: true,
+ [$.HR]: true,
+ [$.I]: true,
+ [$.IMG]: true,
+ [$.LI]: true,
+ [$.LISTING]: true,
+ [$.MENU]: true,
+ [$.META]: true,
+ [$.NOBR]: true,
+ [$.OL]: true,
+ [$.P]: true,
+ [$.PRE]: true,
+ [$.RUBY]: true,
+ [$.S]: true,
+ [$.SMALL]: true,
+ [$.SPAN]: true,
+ [$.STRONG]: true,
+ [$.STRIKE]: true,
+ [$.SUB]: true,
+ [$.SUP]: true,
+ [$.TABLE]: true,
+ [$.TT]: true,
+ [$.U]: true,
+ [$.UL]: true,
+ [$.VAR]: true
+};
+
+//Check exit from foreign content
+exports.causesExit = function(startTagToken) {
+ const tn = startTagToken.tagName;
+ const isFontWithAttrs =
+ tn === $.FONT &&
+ (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||
+ Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||
+ Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);
+
+ return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];
+};
+
+//Token adjustments
+exports.adjustTokenMathMLAttrs = function(token) {
+ for (let i = 0; i < token.attrs.length; i++) {
+ if (token.attrs[i].name === DEFINITION_URL_ATTR) {
+ token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;
+ break;
+ }
+ }
+};
+
+exports.adjustTokenSVGAttrs = function(token) {
+ for (let i = 0; i < token.attrs.length; i++) {
+ const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];
+
+ if (adjustedAttrName) {
+ token.attrs[i].name = adjustedAttrName;
+ }
+ }
+};
+
+exports.adjustTokenXMLAttrs = function(token) {
+ for (let i = 0; i < token.attrs.length; i++) {
+ const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];
+
+ if (adjustedAttrEntry) {
+ token.attrs[i].prefix = adjustedAttrEntry.prefix;
+ token.attrs[i].name = adjustedAttrEntry.name;
+ token.attrs[i].namespace = adjustedAttrEntry.namespace;
+ }
+ }
+};
+
+exports.adjustTokenSVGTagName = function(token) {
+ const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];
+
+ if (adjustedTagName) {
+ token.tagName = adjustedTagName;
+ }
+};
+
+//Integration points
+function isMathMLTextIntegrationPoint(tn, ns) {
+ return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);
+}
+
+function isHtmlIntegrationPoint(tn, ns, attrs) {
+ if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {
+ for (let i = 0; i < attrs.length; i++) {
+ if (attrs[i].name === ATTRS.ENCODING) {
+ const value = attrs[i].value.toLowerCase();
+
+ return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;
+ }
+ }
+ }
+
+ return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);
+}
+
+exports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {
+ if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {
+ return true;
+ }
+
+ if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/school/node_modules/parse5/lib/common/html.js b/school/node_modules/parse5/lib/common/html.js
new file mode 100644
index 0000000..f33646f
--- /dev/null
+++ b/school/node_modules/parse5/lib/common/html.js
@@ -0,0 +1,272 @@
+'use strict';
+
+const NS = (exports.NAMESPACES = {
+ HTML: 'http://www.w3.org/1999/xhtml',
+ MATHML: 'http://www.w3.org/1998/Math/MathML',
+ SVG: 'http://www.w3.org/2000/svg',
+ XLINK: 'http://www.w3.org/1999/xlink',
+ XML: 'http://www.w3.org/XML/1998/namespace',
+ XMLNS: 'http://www.w3.org/2000/xmlns/'
+});
+
+exports.ATTRS = {
+ TYPE: 'type',
+ ACTION: 'action',
+ ENCODING: 'encoding',
+ PROMPT: 'prompt',
+ NAME: 'name',
+ COLOR: 'color',
+ FACE: 'face',
+ SIZE: 'size'
+};
+
+exports.DOCUMENT_MODE = {
+ NO_QUIRKS: 'no-quirks',
+ QUIRKS: 'quirks',
+ LIMITED_QUIRKS: 'limited-quirks'
+};
+
+const $ = (exports.TAG_NAMES = {
+ A: 'a',
+ ADDRESS: 'address',
+ ANNOTATION_XML: 'annotation-xml',
+ APPLET: 'applet',
+ AREA: 'area',
+ ARTICLE: 'article',
+ ASIDE: 'aside',
+
+ B: 'b',
+ BASE: 'base',
+ BASEFONT: 'basefont',
+ BGSOUND: 'bgsound',
+ BIG: 'big',
+ BLOCKQUOTE: 'blockquote',
+ BODY: 'body',
+ BR: 'br',
+ BUTTON: 'button',
+
+ CAPTION: 'caption',
+ CENTER: 'center',
+ CODE: 'code',
+ COL: 'col',
+ COLGROUP: 'colgroup',
+
+ DD: 'dd',
+ DESC: 'desc',
+ DETAILS: 'details',
+ DIALOG: 'dialog',
+ DIR: 'dir',
+ DIV: 'div',
+ DL: 'dl',
+ DT: 'dt',
+
+ EM: 'em',
+ EMBED: 'embed',
+
+ FIELDSET: 'fieldset',
+ FIGCAPTION: 'figcaption',
+ FIGURE: 'figure',
+ FONT: 'font',
+ FOOTER: 'footer',
+ FOREIGN_OBJECT: 'foreignObject',
+ FORM: 'form',
+ FRAME: 'frame',
+ FRAMESET: 'frameset',
+
+ H1: 'h1',
+ H2: 'h2',
+ H3: 'h3',
+ H4: 'h4',
+ H5: 'h5',
+ H6: 'h6',
+ HEAD: 'head',
+ HEADER: 'header',
+ HGROUP: 'hgroup',
+ HR: 'hr',
+ HTML: 'html',
+
+ I: 'i',
+ IMG: 'img',
+ IMAGE: 'image',
+ INPUT: 'input',
+ IFRAME: 'iframe',
+
+ KEYGEN: 'keygen',
+
+ LABEL: 'label',
+ LI: 'li',
+ LINK: 'link',
+ LISTING: 'listing',
+
+ MAIN: 'main',
+ MALIGNMARK: 'malignmark',
+ MARQUEE: 'marquee',
+ MATH: 'math',
+ MENU: 'menu',
+ META: 'meta',
+ MGLYPH: 'mglyph',
+ MI: 'mi',
+ MO: 'mo',
+ MN: 'mn',
+ MS: 'ms',
+ MTEXT: 'mtext',
+
+ NAV: 'nav',
+ NOBR: 'nobr',
+ NOFRAMES: 'noframes',
+ NOEMBED: 'noembed',
+ NOSCRIPT: 'noscript',
+
+ OBJECT: 'object',
+ OL: 'ol',
+ OPTGROUP: 'optgroup',
+ OPTION: 'option',
+
+ P: 'p',
+ PARAM: 'param',
+ PLAINTEXT: 'plaintext',
+ PRE: 'pre',
+
+ RB: 'rb',
+ RP: 'rp',
+ RT: 'rt',
+ RTC: 'rtc',
+ RUBY: 'ruby',
+
+ S: 's',
+ SCRIPT: 'script',
+ SECTION: 'section',
+ SELECT: 'select',
+ SOURCE: 'source',
+ SMALL: 'small',
+ SPAN: 'span',
+ STRIKE: 'strike',
+ STRONG: 'strong',
+ STYLE: 'style',
+ SUB: 'sub',
+ SUMMARY: 'summary',
+ SUP: 'sup',
+
+ TABLE: 'table',
+ TBODY: 'tbody',
+ TEMPLATE: 'template',
+ TEXTAREA: 'textarea',
+ TFOOT: 'tfoot',
+ TD: 'td',
+ TH: 'th',
+ THEAD: 'thead',
+ TITLE: 'title',
+ TR: 'tr',
+ TRACK: 'track',
+ TT: 'tt',
+
+ U: 'u',
+ UL: 'ul',
+
+ SVG: 'svg',
+
+ VAR: 'var',
+
+ WBR: 'wbr',
+
+ XMP: 'xmp'
+});
+
+exports.SPECIAL_ELEMENTS = {
+ [NS.HTML]: {
+ [$.ADDRESS]: true,
+ [$.APPLET]: true,
+ [$.AREA]: true,
+ [$.ARTICLE]: true,
+ [$.ASIDE]: true,
+ [$.BASE]: true,
+ [$.BASEFONT]: true,
+ [$.BGSOUND]: true,
+ [$.BLOCKQUOTE]: true,
+ [$.BODY]: true,
+ [$.BR]: true,
+ [$.BUTTON]: true,
+ [$.CAPTION]: true,
+ [$.CENTER]: true,
+ [$.COL]: true,
+ [$.COLGROUP]: true,
+ [$.DD]: true,
+ [$.DETAILS]: true,
+ [$.DIR]: true,
+ [$.DIV]: true,
+ [$.DL]: true,
+ [$.DT]: true,
+ [$.EMBED]: true,
+ [$.FIELDSET]: true,
+ [$.FIGCAPTION]: true,
+ [$.FIGURE]: true,
+ [$.FOOTER]: true,
+ [$.FORM]: true,
+ [$.FRAME]: true,
+ [$.FRAMESET]: true,
+ [$.H1]: true,
+ [$.H2]: true,
+ [$.H3]: true,
+ [$.H4]: true,
+ [$.H5]: true,
+ [$.H6]: true,
+ [$.HEAD]: true,
+ [$.HEADER]: true,
+ [$.HGROUP]: true,
+ [$.HR]: true,
+ [$.HTML]: true,
+ [$.IFRAME]: true,
+ [$.IMG]: true,
+ [$.INPUT]: true,
+ [$.LI]: true,
+ [$.LINK]: true,
+ [$.LISTING]: true,
+ [$.MAIN]: true,
+ [$.MARQUEE]: true,
+ [$.MENU]: true,
+ [$.META]: true,
+ [$.NAV]: true,
+ [$.NOEMBED]: true,
+ [$.NOFRAMES]: true,
+ [$.NOSCRIPT]: true,
+ [$.OBJECT]: true,
+ [$.OL]: true,
+ [$.P]: true,
+ [$.PARAM]: true,
+ [$.PLAINTEXT]: true,
+ [$.PRE]: true,
+ [$.SCRIPT]: true,
+ [$.SECTION]: true,
+ [$.SELECT]: true,
+ [$.SOURCE]: true,
+ [$.STYLE]: true,
+ [$.SUMMARY]: true,
+ [$.TABLE]: true,
+ [$.TBODY]: true,
+ [$.TD]: true,
+ [$.TEMPLATE]: true,
+ [$.TEXTAREA]: true,
+ [$.TFOOT]: true,
+ [$.TH]: true,
+ [$.THEAD]: true,
+ [$.TITLE]: true,
+ [$.TR]: true,
+ [$.TRACK]: true,
+ [$.UL]: true,
+ [$.WBR]: true,
+ [$.XMP]: true
+ },
+ [NS.MATHML]: {
+ [$.MI]: true,
+ [$.MO]: true,
+ [$.MN]: true,
+ [$.MS]: true,
+ [$.MTEXT]: true,
+ [$.ANNOTATION_XML]: true
+ },
+ [NS.SVG]: {
+ [$.TITLE]: true,
+ [$.FOREIGN_OBJECT]: true,
+ [$.DESC]: true
+ }
+};
diff --git a/school/node_modules/parse5/lib/common/unicode.js b/school/node_modules/parse5/lib/common/unicode.js
new file mode 100644
index 0000000..8d8234f
--- /dev/null
+++ b/school/node_modules/parse5/lib/common/unicode.js
@@ -0,0 +1,109 @@
+'use strict';
+
+const UNDEFINED_CODE_POINTS = [
+ 0xfffe,
+ 0xffff,
+ 0x1fffe,
+ 0x1ffff,
+ 0x2fffe,
+ 0x2ffff,
+ 0x3fffe,
+ 0x3ffff,
+ 0x4fffe,
+ 0x4ffff,
+ 0x5fffe,
+ 0x5ffff,
+ 0x6fffe,
+ 0x6ffff,
+ 0x7fffe,
+ 0x7ffff,
+ 0x8fffe,
+ 0x8ffff,
+ 0x9fffe,
+ 0x9ffff,
+ 0xafffe,
+ 0xaffff,
+ 0xbfffe,
+ 0xbffff,
+ 0xcfffe,
+ 0xcffff,
+ 0xdfffe,
+ 0xdffff,
+ 0xefffe,
+ 0xeffff,
+ 0xffffe,
+ 0xfffff,
+ 0x10fffe,
+ 0x10ffff
+];
+
+exports.REPLACEMENT_CHARACTER = '\uFFFD';
+
+exports.CODE_POINTS = {
+ EOF: -1,
+ NULL: 0x00,
+ TABULATION: 0x09,
+ CARRIAGE_RETURN: 0x0d,
+ LINE_FEED: 0x0a,
+ FORM_FEED: 0x0c,
+ SPACE: 0x20,
+ EXCLAMATION_MARK: 0x21,
+ QUOTATION_MARK: 0x22,
+ NUMBER_SIGN: 0x23,
+ AMPERSAND: 0x26,
+ APOSTROPHE: 0x27,
+ HYPHEN_MINUS: 0x2d,
+ SOLIDUS: 0x2f,
+ DIGIT_0: 0x30,
+ DIGIT_9: 0x39,
+ SEMICOLON: 0x3b,
+ LESS_THAN_SIGN: 0x3c,
+ EQUALS_SIGN: 0x3d,
+ GREATER_THAN_SIGN: 0x3e,
+ QUESTION_MARK: 0x3f,
+ LATIN_CAPITAL_A: 0x41,
+ LATIN_CAPITAL_F: 0x46,
+ LATIN_CAPITAL_X: 0x58,
+ LATIN_CAPITAL_Z: 0x5a,
+ RIGHT_SQUARE_BRACKET: 0x5d,
+ GRAVE_ACCENT: 0x60,
+ LATIN_SMALL_A: 0x61,
+ LATIN_SMALL_F: 0x66,
+ LATIN_SMALL_X: 0x78,
+ LATIN_SMALL_Z: 0x7a,
+ REPLACEMENT_CHARACTER: 0xfffd
+};
+
+exports.CODE_POINT_SEQUENCES = {
+ DASH_DASH_STRING: [0x2d, 0x2d], //--
+ DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE
+ CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[
+ SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script
+ PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC
+ SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM
+};
+
+//Surrogates
+exports.isSurrogate = function(cp) {
+ return cp >= 0xd800 && cp <= 0xdfff;
+};
+
+exports.isSurrogatePair = function(cp) {
+ return cp >= 0xdc00 && cp <= 0xdfff;
+};
+
+exports.getSurrogatePairCodePoint = function(cp1, cp2) {
+ return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;
+};
+
+//NOTE: excluding NULL and ASCII whitespace
+exports.isControlCodePoint = function(cp) {
+ return (
+ (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||
+ (cp >= 0x7f && cp <= 0x9f)
+ );
+};
+
+exports.isUndefinedCodePoint = function(cp) {
+ return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;
+};