[WIP] feat: html support (#4753)
* feat: html support * fix: support empty lines between children * refactor: isScriptTagNode util * refactor: rename `glimmer` and `handlebars` tests * fix don't add newline after `directive` node * fix: support `pre` tag * fix: don't trim comments content * fix: `script` and `style` tags output * feat: indent `head` and `body` inside `html` * fix: better handle quotes around attribute value * feat: better handle embed * tests: svg into html * fix: better handle boolean and empty attributes * chore(deps): update `parse5` to latest version * fix: better handle empty attribute * tests: fix * fix: extra newline in multiline node * fix: print `pre` and `textarea` in right way * tests: xhtml doctype * fix: use `>` instead `/>` * tests: case * refactor: remove `toLowerCase()` * feat: support `prettier-ignore` * tests: empty `script` and `style` tags * fix: clean * tests: refactor and more
This commit is contained in:
1 parent
59720392c3
commit
8b0bdf52be
88 files changed
+2846
-191
No files matched your search
+2
-1
@@ -47,7 +47,8 @@
|
||||
"minimatch": "3.0.4",
|
||||
"minimist": "1.2.0",
|
||||
"normalize-path": "3.0.0",
|
||||
"parse5": "3.0.3",
|
||||
"parse5": "5.0.0",
|
||||
"parse5-htmlparser2-tree-adapter": "5.0.0",
|
||||
"postcss-less": "1.1.5",
|
||||
"postcss-media-query-parser": "0.2.3",
|
||||
"postcss-scss": "1.0.6",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function(ast, newNode) {
|
||||
delete newNode.__location;
|
||||
delete newNode.sourceCodeLocation;
|
||||
|
||||
if (ast.type === "text") {
|
||||
return null;
|
||||
|
||||
@@ -21,7 +21,7 @@ function embed(path, print, textToDoc, options) {
|
||||
) {
|
||||
const parser = options.parser === "flow" ? "flow" : "babylon";
|
||||
const doc = textToDoc(getText(options, node), { parser });
|
||||
return concat([hardline, doc]);
|
||||
return concat([hardline, stripTrailingHardline(doc)]);
|
||||
}
|
||||
|
||||
// Inline TypeScript
|
||||
@@ -35,7 +35,7 @@ function embed(path, print, textToDoc, options) {
|
||||
{ parser: "typescript" },
|
||||
options
|
||||
);
|
||||
return concat([hardline, doc]);
|
||||
return concat([hardline, stripTrailingHardline(doc)]);
|
||||
}
|
||||
|
||||
// Inline Styles
|
||||
@@ -49,7 +49,7 @@ function embed(path, print, textToDoc, options) {
|
||||
|
||||
case "attribute": {
|
||||
/*
|
||||
* Vue binding sytax: JS expressions
|
||||
* Vue binding syntax: JS expressions
|
||||
* :class="{ 'some-key': value }"
|
||||
* v-bind:id="'list-' + id"
|
||||
* v-if="foo && !bar"
|
||||
|
||||
@@ -3,12 +3,15 @@
|
||||
function parse(text /*, parsers, opts*/) {
|
||||
// Inline the require to avoid loading all the JS if we don't use it
|
||||
const parse5 = require("parse5");
|
||||
const htmlparser2TreeAdapter = require("parse5-htmlparser2-tree-adapter");
|
||||
|
||||
try {
|
||||
const isFragment = !/^\s*<(!doctype|html|head|body|!--)/i.test(text);
|
||||
const ast = (isFragment ? parse5.parseFragment : parse5.parse)(text, {
|
||||
treeAdapter: parse5.treeAdapters.htmlparser2,
|
||||
locationInfo: true
|
||||
treeAdapter: htmlparser2TreeAdapter,
|
||||
sourceCodeLocationInfo: true
|
||||
});
|
||||
|
||||
return normalize(extendAst(ast));
|
||||
} catch (error) {
|
||||
throw error;
|
||||
@@ -64,10 +67,10 @@ module.exports = {
|
||||
parse,
|
||||
astFormat: "htmlparser2",
|
||||
locStart(node) {
|
||||
return node.__location && node.__location.startOffset;
|
||||
return node.sourceCodeLocation && node.sourceCodeLocation.startOffset;
|
||||
},
|
||||
locEnd(node) {
|
||||
return node.__location && node.__location.endOffset;
|
||||
return node.sourceCodeLocation && node.sourceCodeLocation.endOffset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,34 +2,21 @@
|
||||
|
||||
const embed = require("./embed");
|
||||
const clean = require("./clean");
|
||||
const { hasNewlineInRange, hasIgnoreComment } = require("../common/util");
|
||||
const { getLast, hasIgnoreComment } = require("../common/util");
|
||||
const { isNextLineEmpty } = require("../common/util-shared");
|
||||
const {
|
||||
concat,
|
||||
join,
|
||||
hardline,
|
||||
line,
|
||||
softline,
|
||||
group,
|
||||
indent
|
||||
} = require("../doc").builders;
|
||||
|
||||
// http://w3c.github.io/html/single-page.html#void-elements
|
||||
const voidTags = {
|
||||
area: true,
|
||||
base: true,
|
||||
br: true,
|
||||
col: true,
|
||||
embed: true,
|
||||
hr: true,
|
||||
img: true,
|
||||
input: true,
|
||||
link: true,
|
||||
meta: true,
|
||||
param: true,
|
||||
source: true,
|
||||
track: true,
|
||||
wbr: true
|
||||
};
|
||||
builders: {
|
||||
concat,
|
||||
line,
|
||||
hardline,
|
||||
softline,
|
||||
group,
|
||||
indent,
|
||||
conditionalGroup,
|
||||
dedentToRoot
|
||||
},
|
||||
utils: { willBreak, isLineNext, isEmpty }
|
||||
} = require("../doc");
|
||||
|
||||
function genericPrint(path, options, print) {
|
||||
const n = path.getValue();
|
||||
@@ -43,50 +30,170 @@ function genericPrint(path, options, print) {
|
||||
|
||||
switch (n.type) {
|
||||
case "root": {
|
||||
return printChildren(path, print);
|
||||
return concat(printChildren(path, print, options));
|
||||
}
|
||||
case "directive": {
|
||||
return concat(["<", n.data, ">", hardline]);
|
||||
return concat([
|
||||
"<",
|
||||
n.data.replace('!DOCTYPE html ""', "!DOCTYPE html"),
|
||||
">",
|
||||
hardline
|
||||
]);
|
||||
}
|
||||
case "text": {
|
||||
const parentNode = path.getParentNode();
|
||||
|
||||
if (
|
||||
parentNode &&
|
||||
(isPreTagNode(parentNode) || isTextAreaTagNode(parentNode))
|
||||
) {
|
||||
return n.data;
|
||||
}
|
||||
|
||||
return n.data.replace(/\s+/g, " ").trim();
|
||||
}
|
||||
case "script":
|
||||
case "style":
|
||||
case "tag": {
|
||||
const selfClose = voidTags[n.name] ? ">" : " />";
|
||||
const children = printChildren(path, print);
|
||||
const isVoid = isVoidTagNode(n);
|
||||
const openingPrinted = printOpeningPart(path, print);
|
||||
|
||||
const hasNewline = hasNewlineInRange(
|
||||
options.originalText,
|
||||
options.locStart(n),
|
||||
options.locEnd(n)
|
||||
);
|
||||
// Print self closing tag
|
||||
if (isVoid) {
|
||||
return concat([openingPrinted]);
|
||||
}
|
||||
|
||||
return group(
|
||||
const closingPrinted = printClosingPart(path, print);
|
||||
const hasChildren = n.children.length > 0;
|
||||
|
||||
// Print tags without children
|
||||
if (!hasChildren) {
|
||||
return concat([openingPrinted, closingPrinted]);
|
||||
}
|
||||
|
||||
const children = printChildren(path, print, options);
|
||||
|
||||
// NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move
|
||||
// on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)
|
||||
if (isPreTagNode(n) || isTextAreaTagNode(n)) {
|
||||
const originalTagContent = options.originalText.slice(
|
||||
n.sourceCodeLocation.startTag.endOffset,
|
||||
n.sourceCodeLocation.endTag.startOffset
|
||||
);
|
||||
const hasNewlineAfterTag = /^(\r\n|\r|\n)/.test(originalTagContent);
|
||||
|
||||
return dedentToRoot(
|
||||
group(
|
||||
concat([
|
||||
openingPrinted,
|
||||
hasNewlineAfterTag ? hardline : "",
|
||||
concat(children),
|
||||
closingPrinted
|
||||
])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
const isScriptTag = isScriptTagNode(n);
|
||||
|
||||
if (isScriptTag) {
|
||||
return group(
|
||||
concat([openingPrinted, concat(children), closingPrinted])
|
||||
);
|
||||
}
|
||||
|
||||
const containsTag =
|
||||
n.children.filter(
|
||||
node => ["script", "style", "tag"].indexOf(node.type) !== -1
|
||||
).length > 0;
|
||||
const containsMultipleAttributes = n.attributes.length > 1;
|
||||
|
||||
let forcedBreak =
|
||||
willBreak(openingPrinted) || containsTag || containsMultipleAttributes;
|
||||
|
||||
// Trim trailing lines (or empty strings)
|
||||
while (
|
||||
children.length &&
|
||||
(isLineNext(getLast(children)) || isEmpty(getLast(children)))
|
||||
) {
|
||||
children.pop();
|
||||
}
|
||||
|
||||
// Trim leading lines (or empty strings)
|
||||
while (
|
||||
children.length &&
|
||||
(isLineNext(children[0]) || isEmpty(children[0])) &&
|
||||
(isLineNext(children[1]) || isEmpty(children[1]))
|
||||
) {
|
||||
children.shift();
|
||||
children.shift();
|
||||
}
|
||||
|
||||
// Detect whether we will force this element to output over multiple lines.
|
||||
const multilineChildren = [];
|
||||
|
||||
children.forEach(child => {
|
||||
multilineChildren.push(child);
|
||||
|
||||
if (willBreak(child)) {
|
||||
forcedBreak = true;
|
||||
}
|
||||
});
|
||||
|
||||
const containsOnlyEmptyTextNodes = n.children.every(node => {
|
||||
return node.type === "text" && /^\s+$/.test(node.data);
|
||||
});
|
||||
|
||||
const printedMultilineChildren = concat([
|
||||
!isScriptTag && !containsOnlyEmptyTextNodes ? hardline : "",
|
||||
group(concat(multilineChildren), { shouldBreak: true })
|
||||
]);
|
||||
|
||||
const multiLineElem = group(
|
||||
concat([
|
||||
hasNewline ? hardline : "",
|
||||
"<",
|
||||
n.name,
|
||||
printAttributes(path, print),
|
||||
|
||||
n.children.length ? ">" : selfClose,
|
||||
|
||||
n.name.toLowerCase() === "html"
|
||||
? concat([hardline, children])
|
||||
: indent(children),
|
||||
n.children.length ? concat([softline, "</", n.name, ">"]) : hardline
|
||||
openingPrinted,
|
||||
indent(printedMultilineChildren),
|
||||
hardline,
|
||||
closingPrinted
|
||||
])
|
||||
);
|
||||
|
||||
if (forcedBreak) {
|
||||
return multiLineElem;
|
||||
}
|
||||
|
||||
return conditionalGroup([
|
||||
group(concat([openingPrinted, concat(children), closingPrinted])),
|
||||
multiLineElem
|
||||
]);
|
||||
}
|
||||
case "comment": {
|
||||
return concat(["<!-- ", n.data.trim(), " -->"]);
|
||||
return concat(["<!--", n.data, "-->"]);
|
||||
}
|
||||
case "attribute": {
|
||||
if (!n.value) {
|
||||
return n.key;
|
||||
if (isBooleanAttributeNode(n)) {
|
||||
return n.key;
|
||||
}
|
||||
|
||||
const parentNode = path.getParentNode();
|
||||
|
||||
if (!parentNode || !parentNode.sourceCodeLocation) {
|
||||
return n.key;
|
||||
}
|
||||
|
||||
const attributeSourceCodeLocation =
|
||||
parentNode.sourceCodeLocation.attrs[n.key];
|
||||
const originalAttributeSourceCode = options.originalText.slice(
|
||||
attributeSourceCodeLocation.startOffset,
|
||||
attributeSourceCodeLocation.endOffset
|
||||
);
|
||||
const hasEqualSign = originalAttributeSourceCode.indexOf("=") !== -1;
|
||||
|
||||
return hasEqualSign ? concat([n.key, '=""']) : n.key;
|
||||
}
|
||||
return concat([n.key, '="', n.value, '"']);
|
||||
|
||||
return concat([n.key, '="', n.value.replace(/"/g, """), '"']);
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -95,25 +202,152 @@ function genericPrint(path, options, print) {
|
||||
}
|
||||
}
|
||||
|
||||
function printAttributes(path, print) {
|
||||
const node = path.getValue();
|
||||
|
||||
return concat([
|
||||
node.attributes.length ? " " : "",
|
||||
indent(join(line, path.map(print, "attributes")))
|
||||
]);
|
||||
function isBooleanAttributeNode(node) {
|
||||
return (
|
||||
node.type === "attribute" &&
|
||||
[
|
||||
"allowfullscreen",
|
||||
"allowpaymentrequest",
|
||||
"async",
|
||||
"autofocus",
|
||||
"autoplay",
|
||||
"checked",
|
||||
"controls",
|
||||
"default",
|
||||
"defer",
|
||||
"disabled",
|
||||
"formnovalidate",
|
||||
"hidden",
|
||||
"ismap",
|
||||
"itemscope",
|
||||
"loop",
|
||||
"multiple",
|
||||
"muted",
|
||||
"nomodule",
|
||||
"novalidate",
|
||||
"open",
|
||||
"readonly",
|
||||
"required",
|
||||
"reversed",
|
||||
"selected",
|
||||
"typemustmatch"
|
||||
].indexOf(node.key) !== -1
|
||||
);
|
||||
}
|
||||
|
||||
function printChildren(path, print) {
|
||||
const children = [];
|
||||
path.each(childPath => {
|
||||
// http://w3c.github.io/html/single-page.html#void-elements
|
||||
function isVoidTagNode(node) {
|
||||
return (
|
||||
node.type === "tag" &&
|
||||
[
|
||||
"area",
|
||||
"base",
|
||||
"br",
|
||||
"col",
|
||||
"embed",
|
||||
"hr",
|
||||
"img",
|
||||
"input",
|
||||
"link",
|
||||
"meta",
|
||||
"param",
|
||||
"source",
|
||||
"track",
|
||||
"wbr"
|
||||
].indexOf(node.name) !== -1
|
||||
);
|
||||
}
|
||||
|
||||
function isPreTagNode(node) {
|
||||
return node.type === "tag" && node.name === "pre";
|
||||
}
|
||||
|
||||
function isTextAreaTagNode(node) {
|
||||
return node.type === "tag" && node.name === "textarea";
|
||||
}
|
||||
|
||||
function isScriptTagNode(node) {
|
||||
return (
|
||||
(node.type === "script" || node.type === "style") &&
|
||||
["script", "style"].indexOf(node.name) !== -1
|
||||
);
|
||||
}
|
||||
|
||||
function printOpeningPart(path, print) {
|
||||
const n = path.getValue();
|
||||
const isVoid = isVoidTagNode(n);
|
||||
|
||||
// Don't break self-closing elements with no attributes
|
||||
if (isVoid && !n.attributes.length) {
|
||||
return concat(["<", n.name, ">"]);
|
||||
}
|
||||
|
||||
// Don't break up opening elements with a single long text attribute
|
||||
if (n.attributes && n.attributes.length === 1 && n.attributes[0].value) {
|
||||
return group(
|
||||
concat([
|
||||
"<",
|
||||
path.call(print, "name"),
|
||||
" ",
|
||||
concat(path.map(print, "attributes")),
|
||||
">"
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
return group(
|
||||
concat([
|
||||
"<",
|
||||
n.name,
|
||||
concat([
|
||||
indent(
|
||||
concat(path.map(attr => concat([line, print(attr)]), "attributes"))
|
||||
),
|
||||
softline
|
||||
]),
|
||||
">"
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
function printClosingPart(path, print) {
|
||||
return concat(["</", path.call(print, "name"), ">"]);
|
||||
}
|
||||
|
||||
function printChildren(path, print, options) {
|
||||
const parts = [];
|
||||
|
||||
path.map((childPath, i) => {
|
||||
const parentNode = childPath.getParentNode();
|
||||
const child = childPath.getValue();
|
||||
if (child.type !== "text") {
|
||||
children.push(hardline);
|
||||
const printedChild = print(childPath);
|
||||
|
||||
if (
|
||||
parentNode &&
|
||||
parentNode.children[i - 2] &&
|
||||
parentNode.children[i - 2].type === "comment" &&
|
||||
parentNode.children[i - 2].data.trim() === "prettier-ignore"
|
||||
) {
|
||||
parts.push(
|
||||
options.originalText.slice(
|
||||
options.locStart(child),
|
||||
options.locEnd(child)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
parts.push(printedChild);
|
||||
}
|
||||
|
||||
if (child.type !== "text" && child.type !== "directive") {
|
||||
parts.push(hardline);
|
||||
}
|
||||
|
||||
if (isNextLineEmpty(options.originalText, childPath.getValue(), options)) {
|
||||
parts.push(hardline);
|
||||
}
|
||||
children.push(childPath.call(print));
|
||||
}, "children");
|
||||
return concat(children);
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,216 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`attributes.html - parse5-verify 1`] = `
|
||||
<input name=address maxlength=200>
|
||||
<input name='address' maxlength='200'>
|
||||
<input name="address" maxlength="200">
|
||||
<div class="foo"></div>
|
||||
<div class="foo" ></div>
|
||||
<div class="foo bar"></div>
|
||||
<div class="foo bar" id="header"></div>
|
||||
<div class="foo bar" id="header" ></div>
|
||||
<div data-prettier></div>
|
||||
<div data-prettier="true"></div>
|
||||
<meta property="og:description" content="The Mozilla Developer Network (MDN) provides
|
||||
information about Open Web technologies including HTML, CSS, and APIs for both Web sites
|
||||
and HTML5 Apps. It also documents Mozilla products, like Firefox OS.">
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute=''>String</div>
|
||||
<div attribute >String</div>
|
||||
<div attribute = "" >String</div>
|
||||
<div attribute = '' >String</div>
|
||||
<div attribute >String</div>
|
||||
<div attribute = "" >String</div>
|
||||
<div attribute = '' >String</div>
|
||||
<div attribute="attribute = attribute"></div>
|
||||
<div ATTRIBUTE>String</div>
|
||||
<div ATTRIBUTE="">String</div>
|
||||
<div ATTRIBUTE=''>String</div>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">...</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
...
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<input name="address" maxlength="200">
|
||||
<input name="address" maxlength="200">
|
||||
<input name="address" maxlength="200">
|
||||
<div class="foo"></div>
|
||||
<div class="foo"></div>
|
||||
<div class="foo bar"></div>
|
||||
<div class="foo bar" id="header"></div>
|
||||
<div class="foo bar" id="header"></div>
|
||||
<div data-prettier></div>
|
||||
<div data-prettier="true"></div>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="The Mozilla Developer Network (MDN) provides
|
||||
information about Open Web technologies including HTML, CSS, and APIs for both Web sites
|
||||
and HTML5 Apps. It also documents Mozilla products, like Firefox OS."
|
||||
>
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute="attribute = attribute"></div>
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute="">String</div>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars"
|
||||
>
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars"
|
||||
>
|
||||
...
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars"
|
||||
>
|
||||
...
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars"
|
||||
>
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars"
|
||||
>
|
||||
</article>
|
||||
|
||||
`;
|
||||
|
||||
exports[`boolean.html - parse5-verify 1`] = `
|
||||
<button type="submit">This is valid.</button>
|
||||
<button type="submit" disabled>This is valid.</button>
|
||||
<button type="submit" disabled="">This is valid.</button>
|
||||
<button type="submit" disabled="disabled">This is valid.</button>
|
||||
<button type="submit" disabled=true>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='true'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="true">This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled=false>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="false">This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='false'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled=hahah>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='hahah'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="hahah">This is valid. This will be disabled.</button>
|
||||
<input type="checkbox" checked disabled name="cheese">
|
||||
<input type="checkbox" checked="checked" disabled="disabled" name="cheese">
|
||||
<input type='checkbox' checked="" disabled="" name=cheese >
|
||||
<div lang=""></div>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<button type="submit">This is valid.</button>
|
||||
<button type="submit" disabled>
|
||||
This is valid.
|
||||
</button>
|
||||
<button type="submit" disabled>
|
||||
This is valid.
|
||||
</button>
|
||||
<button type="submit" disabled="disabled">
|
||||
This is valid.
|
||||
</button>
|
||||
<button type="submit" disabled="true">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="true">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="true">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="false">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="false">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="false">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="hahah">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="hahah">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<button type="submit" disabled="hahah">
|
||||
This is valid. This will be disabled.
|
||||
</button>
|
||||
<input type="checkbox" checked disabled name="cheese">
|
||||
<input type="checkbox" checked="checked" disabled="disabled" name="cheese">
|
||||
<input type="checkbox" checked disabled name="cheese">
|
||||
<div lang=""></div>
|
||||
|
||||
`;
|
||||
|
||||
exports[`dobule-quotes.html - parse5-verify 1`] = `
|
||||
<img src="test.png" alt="John 'ShotGun' Nelson">
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<img src="test.png" alt="John 'ShotGun' Nelson">
|
||||
|
||||
`;
|
||||
|
||||
exports[`single-quotes.html - parse5-verify 1`] = `
|
||||
<img src="test.png" alt='John "ShotGun" Nelson'>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<img src="test.png" alt="John "ShotGun" Nelson">
|
||||
|
||||
`;
|
||||
|
||||
exports[`without-quotes.html - parse5-verify 1`] = `
|
||||
<p title=Title>String</p>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<p title="Title">String</p>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,60 @@
|
||||
<input name=address maxlength=200>
|
||||
<input name='address' maxlength='200'>
|
||||
<input name="address" maxlength="200">
|
||||
<div class="foo"></div>
|
||||
<div class="foo" ></div>
|
||||
<div class="foo bar"></div>
|
||||
<div class="foo bar" id="header"></div>
|
||||
<div class="foo bar" id="header" ></div>
|
||||
<div data-prettier></div>
|
||||
<div data-prettier="true"></div>
|
||||
<meta property="og:description" content="The Mozilla Developer Network (MDN) provides
|
||||
information about Open Web technologies including HTML, CSS, and APIs for both Web sites
|
||||
and HTML5 Apps. It also documents Mozilla products, like Firefox OS.">
|
||||
<div attribute>String</div>
|
||||
<div attribute="">String</div>
|
||||
<div attribute=''>String</div>
|
||||
<div attribute >String</div>
|
||||
<div attribute = "" >String</div>
|
||||
<div attribute = '' >String</div>
|
||||
<div attribute >String</div>
|
||||
<div attribute = "" >String</div>
|
||||
<div attribute = '' >String</div>
|
||||
<div attribute="attribute = attribute"></div>
|
||||
<div ATTRIBUTE>String</div>
|
||||
<div ATTRIBUTE="">String</div>
|
||||
<div ATTRIBUTE=''>String</div>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">...</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
...
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
|
||||
</article>
|
||||
<article
|
||||
id="electriccars"
|
||||
data-columns="3"
|
||||
data-index-number="12314"
|
||||
data-parent="cars">
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
@@ -0,0 +1,17 @@
|
||||
<button type="submit">This is valid.</button>
|
||||
<button type="submit" disabled>This is valid.</button>
|
||||
<button type="submit" disabled="">This is valid.</button>
|
||||
<button type="submit" disabled="disabled">This is valid.</button>
|
||||
<button type="submit" disabled=true>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='true'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="true">This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled=false>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="false">This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='false'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled=hahah>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled='hahah'>This is valid. This will be disabled.</button>
|
||||
<button type="submit" disabled="hahah">This is valid. This will be disabled.</button>
|
||||
<input type="checkbox" checked disabled name="cheese">
|
||||
<input type="checkbox" checked="checked" disabled="disabled" name="cheese">
|
||||
<input type='checkbox' checked="" disabled="" name=cheese >
|
||||
<div lang=""></div>
|
||||
@@ -0,0 +1 @@
|
||||
<img src="test.png" alt="John 'ShotGun' Nelson">
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1 @@
|
||||
<img src="test.png" alt='John "ShotGun" Nelson'>
|
||||
@@ -0,0 +1 @@
|
||||
<p title=Title>String</p>
|
||||
@@ -5,11 +5,9 @@ exports[`basic.html - parse5-verify 1`] = `
|
||||
<i class.bind="icon"></i>
|
||||
</template>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
<i class.bind="icon" />
|
||||
<i class.bind="icon"></i>
|
||||
|
||||
</template>
|
||||
|
||||
`;
|
||||
@@ -1,5 +1,208 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`empty.html - parse5-verify 1`] = `
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
`;
|
||||
|
||||
exports[`empty-doc.html - parse5-verify 1`] = `
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body></body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`form.html - parse5-verify 1`] = `
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1">Email address</label>
|
||||
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
|
||||
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPassword1">Password</label>
|
||||
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect1">Example select</label>
|
||||
<select class="form-control" id="exampleSelect1">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect2">Example multiple select</label>
|
||||
<select multiple class="form-control" id="exampleSelect2">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleTextarea">Example textarea</label>
|
||||
<textarea class="form-control" id="exampleTextarea" rows="3"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputFile">File input</label>
|
||||
<input type="file" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp">
|
||||
<small id="fileHelp" class="form-text text-muted">This is some placeholder block-level help text for the above input. It's a bit lighter and easily wraps to a new line.</small>
|
||||
</div>
|
||||
<fieldset class="form-group">
|
||||
<legend>Radio buttons</legend>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1" checked>
|
||||
Option one is this and that—be sure to include why it's great
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios2" value="option2">
|
||||
Option two can be something else and selecting it will deselect option one
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check disabled">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
|
||||
Option three is disabled
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="checkbox" class="form-check-input">
|
||||
Check me out
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1">Email address</label>
|
||||
<input
|
||||
type="email"
|
||||
class="form-control"
|
||||
id="exampleInputEmail1"
|
||||
aria-describedby="emailHelp"
|
||||
placeholder="Enter email"
|
||||
>
|
||||
<small id="emailHelp" class="form-text text-muted">
|
||||
We'll never share your email with anyone else.
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPassword1">Password</label>
|
||||
<input
|
||||
type="password"
|
||||
class="form-control"
|
||||
id="exampleInputPassword1"
|
||||
placeholder="Password"
|
||||
>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect1">Example select</label>
|
||||
<select class="form-control" id="exampleSelect1">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect2">Example multiple select</label>
|
||||
<select multiple class="form-control" id="exampleSelect2">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleTextarea">Example textarea</label>
|
||||
<textarea class="form-control" id="exampleTextarea" rows="3"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputFile">File input</label>
|
||||
<input
|
||||
type="file"
|
||||
class="form-control-file"
|
||||
id="exampleInputFile"
|
||||
aria-describedby="fileHelp"
|
||||
>
|
||||
<small id="fileHelp" class="form-text text-muted">
|
||||
This is some placeholder block-level help text for the above input. It's a bit lighter and easily wraps to a new line.
|
||||
</small>
|
||||
</div>
|
||||
<fieldset class="form-group">
|
||||
<legend>Radio buttons</legend>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
name="optionsRadios"
|
||||
id="optionsRadios1"
|
||||
value="option1"
|
||||
checked
|
||||
>
|
||||
Option one is this and that—be sure to include why it's great
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
name="optionsRadios"
|
||||
id="optionsRadios2"
|
||||
value="option2"
|
||||
>
|
||||
Option two can be something else and selecting it will deselect option one
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check disabled">
|
||||
<label class="form-check-label">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
name="optionsRadios"
|
||||
id="optionsRadios3"
|
||||
value="option3"
|
||||
disabled
|
||||
>
|
||||
Option three is disabled
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="checkbox" class="form-check-input">
|
||||
Check me out
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Submit
|
||||
</button>
|
||||
</form>
|
||||
|
||||
`;
|
||||
|
||||
exports[`hello-world.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
@@ -16,30 +219,20 @@ exports[`hello-world.html - parse5-verify 1`] = `
|
||||
</html>
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en">
|
||||
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<meta http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
|
||||
<title>Document</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- A comment -->
|
||||
<h1>Hello World</h1>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- A comment -->
|
||||
<h1>Hello World</h1>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html-comments.html - parse5-verify 1`] = `
|
||||
@@ -51,22 +244,15 @@ exports[`html-comments.html - parse5-verify 1`] = `
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<!-- htmlhint attr-lowercase: false -->
|
||||
|
||||
<html>
|
||||
|
||||
<head />
|
||||
|
||||
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden
|
||||
class="foo"
|
||||
id="bar" />
|
||||
|
||||
</body>
|
||||
<head></head>
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden class="foo" id="bar"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html-fragment.html - parse5-verify 1`] = `
|
||||
@@ -74,35 +260,131 @@ exports[`html-fragment.html - parse5-verify 1`] = `
|
||||
|
||||
<textarea>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<a href="#">Link</a>
|
||||
<textarea />
|
||||
|
||||
<textarea></textarea>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html5-boilerplate.html - parse5-verify 1`] = `
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<link rel="manifest" href="site.webmanifest">
|
||||
<link rel="apple-touch-icon" href="icon.png">
|
||||
<!-- Place favicon.ico in the root directory -->
|
||||
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!--[if lte IE 9]>
|
||||
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Add your site or application content here -->
|
||||
<p>Hello world! This is HTML5 Boilerplate.</p>
|
||||
<script src="js/vendor/modernizr-3.6.0.min.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
||||
<script>window.jQuery || document.write('<script src="js/vendor/jquery-3.3.1.min.js"><\\/script>')</script>
|
||||
<script src="js/plugins.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
<!-- Google Analytics: change UA-XXXXX-Y to be your site's ID. -->
|
||||
<script>
|
||||
window.ga = function () { ga.q.push(arguments) }; ga.q = []; ga.l = +new Date;
|
||||
ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview')
|
||||
</script>
|
||||
<script src="https://www.google-analytics.com/analytics.js" async defer></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js" lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
>
|
||||
|
||||
<link rel="manifest" href="site.webmanifest">
|
||||
<link rel="apple-touch-icon" href="icon.png">
|
||||
<!-- Place favicon.ico in the root directory -->
|
||||
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!--[if lte IE 9]>
|
||||
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Add your site or application content here -->
|
||||
<p>Hello world! This is HTML5 Boilerplate.</p>
|
||||
<script src="js/vendor/modernizr-3.6.0.min.js"></script>
|
||||
<script
|
||||
src="https://code.jquery.com/jquery-3.3.1.min.js"
|
||||
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
|
||||
crossorigin="anonymous"
|
||||
></script>
|
||||
<script>
|
||||
window.jQuery ||
|
||||
document.write('<script src="js/vendor/jquery-3.3.1.min.js"></script>');
|
||||
</script>
|
||||
<script src="js/plugins.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
<!-- Google Analytics: change UA-XXXXX-Y to be your site's ID. -->
|
||||
<script>
|
||||
window.ga = function() {
|
||||
ga.q.push(arguments);
|
||||
};
|
||||
ga.q = [];
|
||||
ga.l = +new Date();
|
||||
ga("create", "UA-XXXXX-Y", "auto");
|
||||
ga("send", "pageview");
|
||||
</script>
|
||||
<script
|
||||
src="https://www.google-analytics.com/analytics.js"
|
||||
async
|
||||
defer
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`more-html.html - parse5-verify 1`] = `
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden class="foo" id=bar></div>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
<html>
|
||||
|
||||
<head />
|
||||
|
||||
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden
|
||||
class="foo"
|
||||
id="bar" />
|
||||
|
||||
</body>
|
||||
<head></head>
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden class="foo" id="bar"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`void-elements.html - parse5-verify 1`] = `
|
||||
@@ -114,20 +396,12 @@ exports[`void-elements.html - parse5-verify 1`] = `
|
||||
<body></body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
<html>
|
||||
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<link rel="stylesheet"
|
||||
href="code-guide.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="code-guide.css">
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,5 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body></body>
|
||||
</html>
|
||||
Whitespace-only changes.
@@ -0,0 +1,68 @@
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1">Email address</label>
|
||||
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
|
||||
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPassword1">Password</label>
|
||||
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect1">Example select</label>
|
||||
<select class="form-control" id="exampleSelect1">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleSelect2">Example multiple select</label>
|
||||
<select multiple class="form-control" id="exampleSelect2">
|
||||
<option>1</option>
|
||||
<option>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleTextarea">Example textarea</label>
|
||||
<textarea class="form-control" id="exampleTextarea" rows="3"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputFile">File input</label>
|
||||
<input type="file" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp">
|
||||
<small id="fileHelp" class="form-text text-muted">This is some placeholder block-level help text for the above input. It's a bit lighter and easily wraps to a new line.</small>
|
||||
</div>
|
||||
<fieldset class="form-group">
|
||||
<legend>Radio buttons</legend>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1" checked>
|
||||
Option one is this and that—be sure to include why it's great
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios2" value="option2">
|
||||
Option two can be something else and selecting it will deselect option one
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check disabled">
|
||||
<label class="form-check-label">
|
||||
<input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
|
||||
Option three is disabled
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="form-check">
|
||||
<label class="form-check-label">
|
||||
<input type="checkbox" class="form-check-input">
|
||||
Check me out
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
@@ -0,0 +1,40 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<link rel="manifest" href="site.webmanifest">
|
||||
<link rel="apple-touch-icon" href="icon.png">
|
||||
<!-- Place favicon.ico in the root directory -->
|
||||
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!--[if lte IE 9]>
|
||||
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Add your site or application content here -->
|
||||
<p>Hello world! This is HTML5 Boilerplate.</p>
|
||||
<script src="js/vendor/modernizr-3.6.0.min.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
||||
<script>window.jQuery || document.write('<script src="js/vendor/jquery-3.3.1.min.js"><\/script>')</script>
|
||||
<script src="js/plugins.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
|
||||
<!-- Google Analytics: change UA-XXXXX-Y to be your site's ID. -->
|
||||
<script>
|
||||
window.ga = function () { ga.q.push(arguments) }; ga.q = []; ga.l = +new Date;
|
||||
ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview')
|
||||
</script>
|
||||
<script src="https://www.google-analytics.com/analytics.js" async defer></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,4 +1,5 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<a href="#">Anchor</a>
|
||||
<div hidden class="foo" id=bar></div>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`case.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<HTML CLASS="no-js mY-ClAsS">
|
||||
<HEAD>
|
||||
<META CHARSET="utf-8">
|
||||
<TITLE>My tITlE</TITLE>
|
||||
<META NAME="description" content="My CoNtEnT">
|
||||
</HEAD>
|
||||
<body>
|
||||
<P>Hello world!<BR> This is HTML5 Boilerplate.</P>
|
||||
<SCRIPT>
|
||||
window.ga = function () { ga.q.push(arguments) }; ga.q = []; ga.l = +new Date;
|
||||
ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview')
|
||||
</SCRIPT>
|
||||
<SCRIPT src="https://www.google-analytics.com/analytics.js" ASYNC DEFER></SCRIPT>
|
||||
</body>
|
||||
</HTML>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js mY-ClAsS">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>My tITlE</title>
|
||||
<meta name="description" content="My CoNtEnT">
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Hello world!<br>
|
||||
This is HTML5 Boilerplate.
|
||||
</p>
|
||||
<script>
|
||||
window.ga = function() {
|
||||
ga.q.push(arguments);
|
||||
};
|
||||
ga.q = [];
|
||||
ga.l = +new Date();
|
||||
ga("create", "UA-XXXXX-Y", "auto");
|
||||
ga("send", "pageview");
|
||||
</script>
|
||||
<script
|
||||
src="https://www.google-analytics.com/analytics.js"
|
||||
async
|
||||
defer
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<HTML CLASS="no-js mY-ClAsS">
|
||||
<HEAD>
|
||||
<META CHARSET="utf-8">
|
||||
<TITLE>My tITlE</TITLE>
|
||||
<META NAME="description" content="My CoNtEnT">
|
||||
</HEAD>
|
||||
<body>
|
||||
<P>Hello world!<BR> This is HTML5 Boilerplate.</P>
|
||||
<SCRIPT>
|
||||
window.ga = function () { ga.q.push(arguments) }; ga.q = []; ga.l = +new Date;
|
||||
ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview')
|
||||
</SCRIPT>
|
||||
<SCRIPT src="https://www.google-analytics.com/analytics.js" ASYNC DEFER></SCRIPT>
|
||||
</body>
|
||||
</HTML>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,99 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`conditional.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!--[if IE 5]>This is IE 5<br><![endif]-->
|
||||
<!--[if IE 6]>This is IE 6<br><![endif]-->
|
||||
<!--[if IE 7]>This is IE 7<br><![endif]-->
|
||||
<!--[if IE 8]>This is IE 8<br><![endif]-->
|
||||
<!--[if IE 9]>This is IE 9<br><![endif]-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<!--[if IE 5]>This is IE 5<br><![endif]-->
|
||||
<!--[if IE 6]>This is IE 6<br><![endif]-->
|
||||
<!--[if IE 7]>This is IE 7<br><![endif]-->
|
||||
<!--[if IE 8]>This is IE 8<br><![endif]-->
|
||||
<!--[if IE 9]>This is IE 9<br><![endif]-->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`for_debugging.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`hidden.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!--This is a comment-->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<p>This is a paragraph.</p>
|
||||
<!-- Comments are not displayed in the browser -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<!--This is a comment-->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<p>This is a paragraph.</p>
|
||||
<!-- Comments are not displayed in the browser -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!--[if IE 5]>This is IE 5<br><![endif]-->
|
||||
<!--[if IE 6]>This is IE 6<br><![endif]-->
|
||||
<!--[if IE 7]>This is IE 7<br><![endif]-->
|
||||
<!--[if IE 8]>This is IE 8<br><![endif]-->
|
||||
<!--[if IE 9]>This is IE 9<br><![endif]-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
<!-- Do not display this at the moment
|
||||
<img border="0" src="pic_trulli.jpg" alt="Trulli">
|
||||
-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<!--This is a comment-->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<!-- This is a comment -->
|
||||
<p>This is a paragraph.</p>
|
||||
<!-- Comments are not displayed in the browser -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,170 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`empty.html - parse5-verify 1`] = `
|
||||
<style></style>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<style></style>
|
||||
|
||||
`;
|
||||
|
||||
exports[`less.html - parse5-verify 1`] = `
|
||||
<style type="text/less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}
|
||||
</style>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<style type="text/less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}</style>
|
||||
|
||||
<style lang="less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}</style>
|
||||
|
||||
`;
|
||||
|
||||
exports[`postcss.html - parse5-verify 1`] = `
|
||||
<style type="text/css">
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
|
||||
<style lang="postcss">
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: navy;
|
||||
color: yellow;
|
||||
}</style>
|
||||
|
||||
<style lang="postcss">
|
||||
body {
|
||||
background: navy;
|
||||
color: yellow;
|
||||
}</style>
|
||||
|
||||
`;
|
||||
|
||||
exports[`scss.html - parse5-verify 1`] = `
|
||||
<style type="text/x-scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}
|
||||
</style>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<style type="text/x-scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}</style>
|
||||
|
||||
<style lang="scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}</style>
|
||||
|
||||
`;
|
||||
|
||||
exports[`simple.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<style>a { color: red; }</style>
|
||||
<style>
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<style>
|
||||
a {
|
||||
color: red;
|
||||
}</style>
|
||||
<style>
|
||||
body {
|
||||
background: navy;
|
||||
color: yellow;
|
||||
}</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`single-style.html - parse5-verify 1`] = `
|
||||
<style>a { color: red; }</style>
|
||||
<style>
|
||||
h1 {
|
||||
font-size: 120%;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333366;
|
||||
}
|
||||
</style>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<style>
|
||||
a {
|
||||
color: red;
|
||||
}</style>
|
||||
<style>
|
||||
h1 {
|
||||
font-size: 120%;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333366;
|
||||
}</style>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
<style></style>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,17 @@
|
||||
<style type="text/less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less">
|
||||
@nice-blue: #5B83AD;
|
||||
@light-blue: @nice-blue + #111;
|
||||
|
||||
#header {
|
||||
color: @light-blue;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,7 @@
|
||||
<style type="text/css">
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
|
||||
<style lang="postcss">
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
@@ -0,0 +1,19 @@
|
||||
<style type="text/x-scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
$font-stack: Helvetica, sans-serif;
|
||||
$primary-color: #333;
|
||||
|
||||
body {
|
||||
font: 100% $font-stack;
|
||||
color: $primary-color;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<style>a { color: red; }</style>
|
||||
<style>
|
||||
body { background: navy; color: yellow; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,8 @@
|
||||
<style>a { color: red; }</style>
|
||||
<style>
|
||||
h1 {
|
||||
font-size: 120%;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333366;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,163 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`html4.01_frameset.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
|
||||
"http://www.w3.org/TR/html4/frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html4.01_strict.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html4.01_transitional.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`html5.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`xhtml1.1.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
|
||||
<title>XHTML markup</title>
|
||||
</head>
|
||||
<body style="background-color:#ffffcc; color:#008800">
|
||||
<br />
|
||||
<h2 align="center">Sample XHTML page</h2>
|
||||
<br />
|
||||
<div align="center">
|
||||
<img src="../images/bee3.jpg" width="400" height="250" alt="Beep" vspace="20" />
|
||||
</div>
|
||||
<p align="center" style="font-size:17px">Bar Foo,<br />
|
||||
Foo,<br />
|
||||
Bar<br />
|
||||
Foo</p>
|
||||
<p align="center"><em>String</em></p>
|
||||
<br />
|
||||
<hr />
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||||
<title>XHTML markup</title>
|
||||
</head>
|
||||
<body style="background-color:#ffffcc; color:#008800">
|
||||
<br>
|
||||
<h2 align="center">Sample XHTML page</h2>
|
||||
<br>
|
||||
<div align="center">
|
||||
<img
|
||||
src="../images/bee3.jpg"
|
||||
width="400"
|
||||
height="250"
|
||||
alt="Beep"
|
||||
vspace="20"
|
||||
>
|
||||
</div>
|
||||
<p align="center" style="font-size:17px">
|
||||
Bar Foo,<br>
|
||||
Foo,<br>
|
||||
Bar<br>
|
||||
Foo
|
||||
</p>
|
||||
<p align="center">
|
||||
<em>String</em>
|
||||
</p>
|
||||
<br>
|
||||
<hr>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
|
||||
"http://www.w3.org/TR/html4/frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>An HTML standard template</title>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
<body>
|
||||
<p>… Your HTML content here …</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
|
||||
<title>XHTML markup</title>
|
||||
</head>
|
||||
<body style="background-color:#ffffcc; color:#008800">
|
||||
<br />
|
||||
<h2 align="center">Sample XHTML page</h2>
|
||||
<br />
|
||||
<div align="center">
|
||||
<img src="../images/bee3.jpg" width="400" height="250" alt="Beep" vspace="20" />
|
||||
</div>
|
||||
<p align="center" style="font-size:17px">Bar Foo,<br />
|
||||
Foo,<br />
|
||||
Bar<br />
|
||||
Foo</p>
|
||||
<p align="center"><em>String</em></p>
|
||||
<br />
|
||||
<hr />
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,207 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`empty.html - parse5-verify 1`] = `
|
||||
<script></script>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<script></script>
|
||||
|
||||
`;
|
||||
|
||||
exports[`js.html - parse5-verify 1`] = `
|
||||
<script type="text/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script type="application/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<script type="text/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script type="application/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
|
||||
`;
|
||||
|
||||
exports[`simple.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<script>alert('test');</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<script>
|
||||
alert("test");
|
||||
</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
|
||||
exports[`single-script.html - parse5-verify 1`] = `
|
||||
<script>alert('test');</script>
|
||||
<script>
|
||||
document.getElementById("demo").innerHTML = "Hello JavaScript!";
|
||||
</script>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<script>
|
||||
alert("test");
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("demo").innerHTML = "Hello JavaScript!";
|
||||
</script>
|
||||
|
||||
`;
|
||||
|
||||
exports[`typescript.html - parse5-verify 1`] = `
|
||||
<script type="application/x-typescript">
|
||||
class Student {
|
||||
fullName: string;
|
||||
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
|
||||
this.fullName = firstName + " " + middleInitial + " " + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
interface Person {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
function greeter(person : Person) {
|
||||
return "Hello, " + person.firstName + " " + person.lastName;
|
||||
}
|
||||
|
||||
let user = new Student("Jane", "M.", "User");
|
||||
|
||||
document.body.innerHTML = greeter(user);
|
||||
</script>
|
||||
<script lang="ts">
|
||||
class Student {
|
||||
fullName: string;
|
||||
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
|
||||
this.fullName = firstName + " " + middleInitial + " " + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
interface Person {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
function greeter(person : Person) {
|
||||
return "Hello, " + person.firstName + " " + person.lastName;
|
||||
}
|
||||
|
||||
let user = new Student("Jane", "M.", "User");
|
||||
|
||||
document.body.innerHTML = greeter(user);
|
||||
</script>
|
||||
<script lang="tsx">
|
||||
class CommentBox extends React.Component<{ url: string, pollInterval: number}, CommentData> {
|
||||
constructor(){
|
||||
super()
|
||||
this.state = { data: [] };
|
||||
}
|
||||
fetchComments() {
|
||||
$.ajax({
|
||||
url: this.props.url,
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
success: (data) => this.setState({ data: data }),
|
||||
error: (xhr, status, err) => console.error(status, err)
|
||||
})
|
||||
}
|
||||
componentDidMount() {
|
||||
this.fetchComments();
|
||||
setInterval(this.fetchComments.bind(this), this.props.pollInterval);
|
||||
}
|
||||
render() {
|
||||
let handleCommentSubmit = (comment: { author: string, text: string }) => {
|
||||
console.warn('comment submitted!', comment);
|
||||
const updated = this.state.data.slice(0);
|
||||
updated.push(comment);
|
||||
this.setState({ data: updated });
|
||||
}
|
||||
return (
|
||||
<div className="commentBox">
|
||||
<h1>Comments</h1>
|
||||
<CommentList data={this.state.data}/>
|
||||
<CommentForm onCommentSubmit={handleCommentSubmit} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<script type="application/x-typescript">class Student { fullName: string; constructor(public firstName: string, public middleInitial: string, public lastName: string) { this.fullName = firstName + " " + middleInitial + " " + lastName; } } interface Person { firstName: string; lastName: string; } function greeter(person : Person) { return "Hello, " + person.firstName + " " + person.lastName; } let user = new Student("Jane", "M.", "User"); document.body.innerHTML = greeter(user);</script>
|
||||
<script lang="ts">
|
||||
class Student {
|
||||
fullName: string;
|
||||
constructor(
|
||||
public firstName: string,
|
||||
public middleInitial: string,
|
||||
public lastName: string
|
||||
) {
|
||||
this.fullName = firstName + " " + middleInitial + " " + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
interface Person {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
function greeter(person: Person) {
|
||||
return "Hello, " + person.firstName + " " + person.lastName;
|
||||
}
|
||||
|
||||
let user = new Student("Jane", "M.", "User");
|
||||
|
||||
document.body.innerHTML = greeter(user);
|
||||
</script>
|
||||
<script lang="tsx">class CommentBox extends React.Component<{ url: string, pollInterval: number}, CommentData> { constructor(){ super() this.state = { data: [] }; } fetchComments() { $.ajax({ url: this.props.url, dataType: 'json', cache: false, success: (data) => this.setState({ data: data }), error: (xhr, status, err) => console.error(status, err) }) } componentDidMount() { this.fetchComments(); setInterval(this.fetchComments.bind(this), this.props.pollInterval); } render() { let handleCommentSubmit = (comment: { author: string, text: string }) => { console.warn('comment submitted!', comment); const updated = this.state.data.slice(0); updated.push(comment); this.setState({ data: updated }); } return ( <div className="commentBox"> <h1>Comments</h1> <CommentList data={this.state.data}/> <CommentForm onCommentSubmit={handleCommentSubmit} /> </div> ); } }</script>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
<script></script>
|
||||
@@ -0,0 +1,15 @@
|
||||
<script type="text/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script type="application/javascript">
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Sample styled page</title>
|
||||
<script>alert('test');</script>
|
||||
<script>
|
||||
var message = "Alert!";
|
||||
|
||||
alert(message);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sample styled page</h1>
|
||||
<p>This page is just a demo.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
<script>alert('test');</script>
|
||||
<script>
|
||||
document.getElementById("demo").innerHTML = "Hello JavaScript!";
|
||||
</script>
|
||||
@@ -0,0 +1,78 @@
|
||||
<script type="application/x-typescript">
|
||||
class Student {
|
||||
fullName: string;
|
||||
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
|
||||
this.fullName = firstName + " " + middleInitial + " " + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
interface Person {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
function greeter(person : Person) {
|
||||
return "Hello, " + person.firstName + " " + person.lastName;
|
||||
}
|
||||
|
||||
let user = new Student("Jane", "M.", "User");
|
||||
|
||||
document.body.innerHTML = greeter(user);
|
||||
</script>
|
||||
<script lang="ts">
|
||||
class Student {
|
||||
fullName: string;
|
||||
constructor(public firstName: string, public middleInitial: string, public lastName: string) {
|
||||
this.fullName = firstName + " " + middleInitial + " " + lastName;
|
||||
}
|
||||
}
|
||||
|
||||
interface Person {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
function greeter(person : Person) {
|
||||
return "Hello, " + person.firstName + " " + person.lastName;
|
||||
}
|
||||
|
||||
let user = new Student("Jane", "M.", "User");
|
||||
|
||||
document.body.innerHTML = greeter(user);
|
||||
</script>
|
||||
<script lang="tsx">
|
||||
class CommentBox extends React.Component<{ url: string, pollInterval: number}, CommentData> {
|
||||
constructor(){
|
||||
super()
|
||||
this.state = { data: [] };
|
||||
}
|
||||
fetchComments() {
|
||||
$.ajax({
|
||||
url: this.props.url,
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
success: (data) => this.setState({ data: data }),
|
||||
error: (xhr, status, err) => console.error(status, err)
|
||||
})
|
||||
}
|
||||
componentDidMount() {
|
||||
this.fetchComments();
|
||||
setInterval(this.fetchComments.bind(this), this.props.pollInterval);
|
||||
}
|
||||
render() {
|
||||
let handleCommentSubmit = (comment: { author: string, text: string }) => {
|
||||
console.warn('comment submitted!', comment);
|
||||
const updated = this.state.data.slice(0);
|
||||
updated.push(comment);
|
||||
this.setState({ data: updated });
|
||||
}
|
||||
return (
|
||||
<div className="commentBox">
|
||||
<h1>Comments</h1>
|
||||
<CommentList data={this.state.data}/>
|
||||
<CommentForm onCommentSubmit={handleCommentSubmit} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,92 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`document.html - parse5-verify 1`] = `
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- prettier-ignore -->
|
||||
<p>
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<p attribute = "value">
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul
|
||||
><li> First </li
|
||||
><li>Second<i>1</i><div><div>String</div></div></li
|
||||
></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul><!--
|
||||
--><li> First </li><!--
|
||||
--><li> Second </li><!--
|
||||
--></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- prettier-ignore -->
|
||||
<p>
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<p attribute = "value">
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul
|
||||
><li> First </li
|
||||
><li>Second<i>1</i><div><div>String</div></div></li
|
||||
></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul><!--
|
||||
--><li> First </li><!--
|
||||
--><li> Second </li><!--
|
||||
--></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1,43 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- prettier-ignore -->
|
||||
<p>
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<p attribute = "value">
|
||||
Test Test Test
|
||||
</p>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul
|
||||
><li> First </li
|
||||
><li>Second<i>1</i><div><div>String</div></div></li
|
||||
></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<ul><!--
|
||||
--><li> First </li><!--
|
||||
--><li> Second </li><!--
|
||||
--></ul>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,35 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`svg.html - parse5-verify 1`] = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>SVG</title>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="100" height="100">
|
||||
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>SVG</title>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="100" height="100">
|
||||
<circle
|
||||
cx="50"
|
||||
cy="50"
|
||||
r="40"
|
||||
stroke="green"
|
||||
stroke-width="4"
|
||||
fill="yellow"
|
||||
></circle>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>SVG</title>
|
||||
</head>
|
||||
<body>
|
||||
<svg width="100" height="100">
|
||||
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`symbol_entitites.html - parse5-verify 1`] = `
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
<p>I will display €</p>
|
||||
@@ -0,0 +1,404 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`pre.html - parse5-verify 1`] = `
|
||||
<pre>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
* * *
|
||||
** ** ***
|
||||
** ** *
|
||||
**** *** **** ******** ******** *** ****
|
||||
* *** * **** **** * *** ******** ******** *** *** **** **** *
|
||||
* **** ** **** * *** ** ** *** * *** ** ****
|
||||
** ** ** * *** ** ** ** * *** **
|
||||
** ** ** ** *** ** ** ** ** *** **
|
||||
** ** ** ******** ** ** ** ******** **
|
||||
** ** ** ******* ** ** ** ******* **
|
||||
** ** ** ** ** ** ** ** **
|
||||
******* *** **** * ** ** ** **** * ***
|
||||
****** *** ******* ** ** *** * ******* ***
|
||||
** ***** *** *****
|
||||
**
|
||||
**
|
||||
**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
</pre>
|
||||
<pre>
|
||||
|
||||
Text in a pre element
|
||||
|
||||
is displayed in a fixed-width
|
||||
|
||||
font, and it preserves
|
||||
|
||||
both spaces and
|
||||
|
||||
line breaks
|
||||
|
||||
</pre>
|
||||
<pre> Foo Bar </pre>
|
||||
<pre>
|
||||
Foo Bar
|
||||
</pre>
|
||||
<pre>Foo Bar
|
||||
</pre>
|
||||
<pre>
|
||||
Foo Bar</pre>
|
||||
<figure role="img" aria-labelledby="cow-caption">
|
||||
<pre>
|
||||
___________________________
|
||||
< I'm an expert in my field. >
|
||||
---------------------------
|
||||
\\ ^__^
|
||||
\\ (oo)\\_______
|
||||
(__)\\ )\\/\\
|
||||
||----w |
|
||||
|| ||
|
||||
___________________________
|
||||
</pre>
|
||||
<figcaption id="cow-caption">
|
||||
A cow saying, "I'm an expert in my field." The cow is illustrated using preformatted text characters.
|
||||
</figcaption>
|
||||
</figure>
|
||||
<pre data-attr-1="foo" data-attr-2="foo" data-attr-3="foo" data-attr-4="foo" data-attr-5="foo" data-attr-6="foo">
|
||||
Foo Bar
|
||||
</pre>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<pre>
|
||||
______
|
||||
STRING
|
||||
______
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<pre></pre>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<pre>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
* * *
|
||||
** ** ***
|
||||
** ** *
|
||||
**** *** **** ******** ******** *** ****
|
||||
* *** * **** **** * *** ******** ******** *** *** **** **** *
|
||||
* **** ** **** * *** ** ** *** * *** ** ****
|
||||
** ** ** * *** ** ** ** * *** **
|
||||
** ** ** ** *** ** ** ** ** *** **
|
||||
** ** ** ******** ** ** ** ******** **
|
||||
** ** ** ******* ** ** ** ******* **
|
||||
** ** ** ** ** ** ** ** **
|
||||
******* *** **** * ** ** ** **** * ***
|
||||
****** *** ******* ** ** *** * ******* ***
|
||||
** ***** *** *****
|
||||
**
|
||||
**
|
||||
**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
</pre>
|
||||
<pre>
|
||||
|
||||
Text in a pre element
|
||||
|
||||
is displayed in a fixed-width
|
||||
|
||||
font, and it preserves
|
||||
|
||||
both spaces and
|
||||
|
||||
line breaks
|
||||
|
||||
</pre>
|
||||
<pre> Foo Bar </pre>
|
||||
<pre>
|
||||
Foo Bar
|
||||
</pre>
|
||||
<pre>Foo Bar
|
||||
</pre>
|
||||
<pre>
|
||||
Foo Bar</pre>
|
||||
<figure role="img" aria-labelledby="cow-caption">
|
||||
<pre>
|
||||
___________________________
|
||||
< I'm an expert in my field. >
|
||||
---------------------------
|
||||
\\ ^__^
|
||||
\\ (oo)\\_______
|
||||
(__)\\ )\\/\\
|
||||
||----w |
|
||||
|| ||
|
||||
___________________________
|
||||
</pre>
|
||||
<figcaption id="cow-caption">
|
||||
A cow saying, "I'm an expert in my field." The cow is illustrated using preformatted text characters.
|
||||
</figcaption>
|
||||
</figure>
|
||||
<pre
|
||||
data-attr-1="foo"
|
||||
data-attr-2="foo"
|
||||
data-attr-3="foo"
|
||||
data-attr-4="foo"
|
||||
data-attr-5="foo"
|
||||
data-attr-6="foo"
|
||||
>
|
||||
Foo Bar
|
||||
</pre>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<pre>
|
||||
______
|
||||
STRING
|
||||
______
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<pre></pre>
|
||||
|
||||
`;
|
||||
|
||||
exports[`tags.html - parse5-verify 1`] = `
|
||||
<br/>
|
||||
<br />
|
||||
<br />
|
||||
<br
|
||||
/>
|
||||
<br attribute-a />
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute />
|
||||
<br attribute-a="value" />
|
||||
<br
|
||||
attribute-a="value"
|
||||
/>
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value" />
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value" />
|
||||
<br attribute-a="value" attribute-b="value" attribute-c="value" attribute-d="value" attribute-e="value" attribute-f="value" />
|
||||
<div>string</div>
|
||||
<div>very very very very very very very very very very very very very very very very long string</div>
|
||||
<div very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute>string</div>
|
||||
<div very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value">string</div>
|
||||
<div attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value">string</div>
|
||||
<div attribute="value">very very very very very very very very very very very very very very very very long string</div>
|
||||
<div attribute="value" attributea="value" attributeb="value" attributec="value" attributed="value" attributef="value">string</div>
|
||||
<div attribute="value" attributea="value" attributeb="value" attributec="value" attributed="value" attributef="value">very very very very very very very very very very very very very very very very long string</div>
|
||||
<video width="320" height="240" controls>
|
||||
<source src="movie.mp4" type="video/mp4">
|
||||
<source src="movie.ogg" type="video/ogg">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<div><div>string</div></div>
|
||||
<div><div>string</div><div>string</div></div>
|
||||
<div><div><div>string</div></div><div>string</div></div>
|
||||
<div><div>string</div><div><div>string</div></div></div>
|
||||
<div><div></div></div>
|
||||
<div><div></div><div></div></div>
|
||||
<div><div><div><div><div><div><div>string</div></div></div></div></div></div></div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
</div>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br attribute-a>
|
||||
<br
|
||||
very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute
|
||||
>
|
||||
<br attribute-a="value">
|
||||
<br attribute-a="value">
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value">
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value">
|
||||
<br
|
||||
attribute-a="value"
|
||||
attribute-b="value"
|
||||
attribute-c="value"
|
||||
attribute-d="value"
|
||||
attribute-e="value"
|
||||
attribute-f="value"
|
||||
>
|
||||
<div>string</div>
|
||||
<div>
|
||||
very very very very very very very very very very very very very very very very long string
|
||||
</div>
|
||||
<div
|
||||
very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute
|
||||
>
|
||||
string
|
||||
</div>
|
||||
<div very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value">
|
||||
string
|
||||
</div>
|
||||
<div attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value">
|
||||
string
|
||||
</div>
|
||||
<div attribute="value">
|
||||
very very very very very very very very very very very very very very very very long string
|
||||
</div>
|
||||
<div
|
||||
attribute="value"
|
||||
attributea="value"
|
||||
attributeb="value"
|
||||
attributec="value"
|
||||
attributed="value"
|
||||
attributef="value"
|
||||
>
|
||||
string
|
||||
</div>
|
||||
<div
|
||||
attribute="value"
|
||||
attributea="value"
|
||||
attributeb="value"
|
||||
attributec="value"
|
||||
attributed="value"
|
||||
attributef="value"
|
||||
>
|
||||
very very very very very very very very very very very very very very very very long string
|
||||
</div>
|
||||
<video width="320" height="240" controls>
|
||||
<source src="movie.mp4" type="video/mp4">
|
||||
<source src="movie.ogg" type="video/ogg">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
|
||||
<div>string</div>
|
||||
</div>
|
||||
|
||||
`;
|
||||
|
||||
exports[`textarea.html - parse5-verify 1`] = `
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<textarea rows="10" cols="45" name="text">
|
||||
String
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<textarea></textarea>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<textarea rows="10" cols="45" name="text">
|
||||
String
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<textarea></textarea>
|
||||
|
||||
`;
|
||||
|
||||
exports[`unsupported.html - parse5-verify 1`] = `
|
||||
<center></center>
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
<center></center>
|
||||
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
run_spec(__dirname, ["parse5"]);
|
||||
@@ -0,0 +1,78 @@
|
||||
<pre>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
* * *
|
||||
** ** ***
|
||||
** ** *
|
||||
**** *** **** ******** ******** *** ****
|
||||
* *** * **** **** * *** ******** ******** *** *** **** **** *
|
||||
* **** ** **** * *** ** ** *** * *** ** ****
|
||||
** ** ** * *** ** ** ** * *** **
|
||||
** ** ** ** *** ** ** ** ** *** **
|
||||
** ** ** ******** ** ** ** ******** **
|
||||
** ** ** ******* ** ** ** ******* **
|
||||
** ** ** ** ** ** ** ** **
|
||||
******* *** **** * ** ** ** **** * ***
|
||||
****** *** ******* ** ** *** * ******* ***
|
||||
** ***** *** *****
|
||||
**
|
||||
**
|
||||
**
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
</pre>
|
||||
<pre>
|
||||
|
||||
Text in a pre element
|
||||
|
||||
is displayed in a fixed-width
|
||||
|
||||
font, and it preserves
|
||||
|
||||
both spaces and
|
||||
|
||||
line breaks
|
||||
|
||||
</pre>
|
||||
<pre> Foo Bar </pre>
|
||||
<pre>
|
||||
Foo Bar
|
||||
</pre>
|
||||
<pre>Foo Bar
|
||||
</pre>
|
||||
<pre>
|
||||
Foo Bar</pre>
|
||||
<figure role="img" aria-labelledby="cow-caption">
|
||||
<pre>
|
||||
___________________________
|
||||
< I'm an expert in my field. >
|
||||
---------------------------
|
||||
\ ^__^
|
||||
\ (oo)\_______
|
||||
(__)\ )\/\
|
||||
||----w |
|
||||
|| ||
|
||||
___________________________
|
||||
</pre>
|
||||
<figcaption id="cow-caption">
|
||||
A cow saying, "I'm an expert in my field." The cow is illustrated using preformatted text characters.
|
||||
</figcaption>
|
||||
</figure>
|
||||
<pre data-attr-1="foo" data-attr-2="foo" data-attr-3="foo" data-attr-4="foo" data-attr-5="foo" data-attr-6="foo">
|
||||
Foo Bar
|
||||
</pre>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<pre>
|
||||
______
|
||||
STRING
|
||||
______
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<pre></pre>
|
||||
@@ -0,0 +1,49 @@
|
||||
<br/>
|
||||
<br />
|
||||
<br />
|
||||
<br
|
||||
/>
|
||||
<br attribute-a />
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute />
|
||||
<br attribute-a="value" />
|
||||
<br
|
||||
attribute-a="value"
|
||||
/>
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value" />
|
||||
<br very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value" />
|
||||
<br attribute-a="value" attribute-b="value" attribute-c="value" attribute-d="value" attribute-e="value" attribute-f="value" />
|
||||
<div>string</div>
|
||||
<div>very very very very very very very very very very very very very very very very long string</div>
|
||||
<div very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute>string</div>
|
||||
<div very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-attribute="value">string</div>
|
||||
<div attribute="very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-value">string</div>
|
||||
<div attribute="value">very very very very very very very very very very very very very very very very long string</div>
|
||||
<div attribute="value" attributea="value" attributeb="value" attributec="value" attributed="value" attributef="value">string</div>
|
||||
<div attribute="value" attributea="value" attributeb="value" attributec="value" attributed="value" attributef="value">very very very very very very very very very very very very very very very very long string</div>
|
||||
<video width="320" height="240" controls>
|
||||
<source src="movie.mp4" type="video/mp4">
|
||||
<source src="movie.ogg" type="video/ogg">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<div><div>string</div></div>
|
||||
<div><div>string</div><div>string</div></div>
|
||||
<div><div><div>string</div></div><div>string</div></div>
|
||||
<div><div>string</div><div><div>string</div></div></div>
|
||||
<div><div></div></div>
|
||||
<div><div></div><div></div></div>
|
||||
<div><div><div><div><div><div><div>string</div></div></div></div></div></div></div>
|
||||
<div>
|
||||
<div>string</div>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
<div>string</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<textarea rows="10" cols="45" name="text">
|
||||
String
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<textarea></textarea>
|
||||
@@ -0,0 +1 @@
|
||||
<center></center>
|
||||
@@ -14,23 +14,15 @@ exports[`html-with-css-style.html - parse5-verify 1`] = `
|
||||
</html>
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en">
|
||||
|
||||
|
||||
<head>
|
||||
|
||||
<style>
|
||||
<head>
|
||||
<style>
|
||||
blink {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
}</style>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -13,22 +13,14 @@ exports[`html-with-js-script.html - parse5-verify 1`] = `
|
||||
</html>
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en">
|
||||
|
||||
|
||||
<head>
|
||||
|
||||
<script type="text/javascript">
|
||||
<head>
|
||||
<script type="text/javascript">
|
||||
hello("world");
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -22,26 +22,18 @@ exports[`html-with-ts-script.html - parse5-verify 1`] = `
|
||||
</html>
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en">
|
||||
|
||||
|
||||
<head>
|
||||
|
||||
<script lang="ts">
|
||||
<head>
|
||||
<script lang="ts">
|
||||
type X = { [K in keyof Y]: Partial<K> };
|
||||
|
||||
class Foo<T> {
|
||||
constructor(private foo: keyof Apple) {}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
@@ -573,10 +573,6 @@
|
||||
dependencies:
|
||||
commander "*"
|
||||
|
||||
"@types/node@*":
|
||||
version "8.0.47"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2"
|
||||
|
||||
"@types/semver@^5.4.0":
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
|
||||
@@ -4384,11 +4380,15 @@ parse-json@^4.0.0:
|
||||
error-ex "^1.3.1"
|
||||
json-parse-better-errors "^1.0.1"
|
||||
|
||||
parse5@3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
|
||||
parse5-htmlparser2-tree-adapter@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.0.0.tgz#f941eced8061ecb1bc2db744c416a037abfe64d1"
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
parse5 "^5.0.0"
|
||||
|
||||
parse5@5.0.0, parse5@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.0.0.tgz#4d02710d44f3c3846197a11e205d4ef17842b81a"
|
||||
|
||||
parse5@4.0.0:
|
||||
version "4.0.0"
|
||||
|
||||
Reference in new issue
Block a user