dartfmt
diff --git a/lib/parser.dart b/lib/parser.dart
index 0575b3d..546061f 100644
--- a/lib/parser.dart
+++ b/lib/parser.dart
@@ -55,8 +55,11 @@
/// [Node.sourceSpan] property will be `null`. When using [generateSpans] you can
/// additionally pass [sourceUrl] to indicate where the [input] was extracted
/// from.
-DocumentFragment parseFragment(input, {String container: "div", String encoding,
- bool generateSpans: false, String sourceUrl}) {
+DocumentFragment parseFragment(input,
+ {String container: "div",
+ String encoding,
+ bool generateSpans: false,
+ String sourceUrl}) {
var p = new HtmlParser(input,
encoding: encoding, generateSpans: generateSpans, sourceUrl: sourceUrl);
return p.parseFragment(container);
@@ -138,9 +141,14 @@
/// automatic conversion of element and attribute names to lower case. Note
/// that standard way to parse HTML is to lowercase, which is what the browser
/// DOM will do if you request [Node.outerHTML], for example.
- HtmlParser(input, {String encoding, bool parseMeta: true,
- bool lowercaseElementName: true, bool lowercaseAttrName: true,
- this.strict: false, bool generateSpans: false, String sourceUrl,
+ HtmlParser(input,
+ {String encoding,
+ bool parseMeta: true,
+ bool lowercaseElementName: true,
+ bool lowercaseAttrName: true,
+ this.strict: false,
+ bool generateSpans: false,
+ String sourceUrl,
TreeBuilder tree})
: generateSpans = generateSpans,
tree = tree != null ? tree : new TreeBuilder(true),
@@ -345,9 +353,8 @@
if (token is StartTagToken) {
if (token.selfClosing && !token.selfClosingAcknowledged) {
- parseError(token.span, "non-void-element-with-trailing-solidus", {
- "name": token.name
- });
+ parseError(token.span, "non-void-element-with-trailing-solidus",
+ {"name": token.name});
}
}
}
@@ -696,86 +703,88 @@
publicId = asciiUpper2Lower(publicId);
}
- if (!correct || token.name != "html" || startsWithAny(publicId, const [
- "+//silmaril//dtd html pro v0r11 19970101//",
- "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
- "-//as//dtd html 3.0 aswedit + extensions//",
- "-//ietf//dtd html 2.0 level 1//",
- "-//ietf//dtd html 2.0 level 2//",
- "-//ietf//dtd html 2.0 strict level 1//",
- "-//ietf//dtd html 2.0 strict level 2//",
- "-//ietf//dtd html 2.0 strict//",
- "-//ietf//dtd html 2.0//",
- "-//ietf//dtd html 2.1e//",
- "-//ietf//dtd html 3.0//",
- "-//ietf//dtd html 3.2 final//",
- "-//ietf//dtd html 3.2//",
- "-//ietf//dtd html 3//",
- "-//ietf//dtd html level 0//",
- "-//ietf//dtd html level 1//",
- "-//ietf//dtd html level 2//",
- "-//ietf//dtd html level 3//",
- "-//ietf//dtd html strict level 0//",
- "-//ietf//dtd html strict level 1//",
- "-//ietf//dtd html strict level 2//",
- "-//ietf//dtd html strict level 3//",
- "-//ietf//dtd html strict//",
- "-//ietf//dtd html//",
- "-//metrius//dtd metrius presentational//",
- "-//microsoft//dtd internet explorer 2.0 html strict//",
- "-//microsoft//dtd internet explorer 2.0 html//",
- "-//microsoft//dtd internet explorer 2.0 tables//",
- "-//microsoft//dtd internet explorer 3.0 html strict//",
- "-//microsoft//dtd internet explorer 3.0 html//",
- "-//microsoft//dtd internet explorer 3.0 tables//",
- "-//netscape comm. corp.//dtd html//",
- "-//netscape comm. corp.//dtd strict html//",
- "-//o'reilly and associates//dtd html 2.0//",
- "-//o'reilly and associates//dtd html extended 1.0//",
- "-//o'reilly and associates//dtd html extended relaxed 1.0//",
- "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
- "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
- "-//spyglass//dtd html 2.0 extended//",
- "-//sq//dtd html 2.0 hotmetal + extensions//",
- "-//sun microsystems corp.//dtd hotjava html//",
- "-//sun microsystems corp.//dtd hotjava strict html//",
- "-//w3c//dtd html 3 1995-03-24//",
- "-//w3c//dtd html 3.2 draft//",
- "-//w3c//dtd html 3.2 final//",
- "-//w3c//dtd html 3.2//",
- "-//w3c//dtd html 3.2s draft//",
- "-//w3c//dtd html 4.0 frameset//",
- "-//w3c//dtd html 4.0 transitional//",
- "-//w3c//dtd html experimental 19960712//",
- "-//w3c//dtd html experimental 970421//",
- "-//w3c//dtd w3 html//",
- "-//w3o//dtd w3 html 3.0//",
- "-//webtechs//dtd mozilla html 2.0//",
- "-//webtechs//dtd mozilla html//"
- ]) ||
- const [
- "-//w3o//dtd w3 html strict 3.0//en//",
- "-/w3c/dtd html 4.0 transitional/en",
- "html"
- ].contains(publicId) ||
+ if (!correct ||
+ token.name != "html" ||
startsWithAny(publicId, const [
- "-//w3c//dtd html 4.01 frameset//",
- "-//w3c//dtd html 4.01 transitional//"
- ]) &&
+ "+//silmaril//dtd html pro v0r11 19970101//",
+ "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
+ "-//as//dtd html 3.0 aswedit + extensions//",
+ "-//ietf//dtd html 2.0 level 1//",
+ "-//ietf//dtd html 2.0 level 2//",
+ "-//ietf//dtd html 2.0 strict level 1//",
+ "-//ietf//dtd html 2.0 strict level 2//",
+ "-//ietf//dtd html 2.0 strict//",
+ "-//ietf//dtd html 2.0//",
+ "-//ietf//dtd html 2.1e//",
+ "-//ietf//dtd html 3.0//",
+ "-//ietf//dtd html 3.2 final//",
+ "-//ietf//dtd html 3.2//",
+ "-//ietf//dtd html 3//",
+ "-//ietf//dtd html level 0//",
+ "-//ietf//dtd html level 1//",
+ "-//ietf//dtd html level 2//",
+ "-//ietf//dtd html level 3//",
+ "-//ietf//dtd html strict level 0//",
+ "-//ietf//dtd html strict level 1//",
+ "-//ietf//dtd html strict level 2//",
+ "-//ietf//dtd html strict level 3//",
+ "-//ietf//dtd html strict//",
+ "-//ietf//dtd html//",
+ "-//metrius//dtd metrius presentational//",
+ "-//microsoft//dtd internet explorer 2.0 html strict//",
+ "-//microsoft//dtd internet explorer 2.0 html//",
+ "-//microsoft//dtd internet explorer 2.0 tables//",
+ "-//microsoft//dtd internet explorer 3.0 html strict//",
+ "-//microsoft//dtd internet explorer 3.0 html//",
+ "-//microsoft//dtd internet explorer 3.0 tables//",
+ "-//netscape comm. corp.//dtd html//",
+ "-//netscape comm. corp.//dtd strict html//",
+ "-//o'reilly and associates//dtd html 2.0//",
+ "-//o'reilly and associates//dtd html extended 1.0//",
+ "-//o'reilly and associates//dtd html extended relaxed 1.0//",
+ "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
+ "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
+ "-//spyglass//dtd html 2.0 extended//",
+ "-//sq//dtd html 2.0 hotmetal + extensions//",
+ "-//sun microsystems corp.//dtd hotjava html//",
+ "-//sun microsystems corp.//dtd hotjava strict html//",
+ "-//w3c//dtd html 3 1995-03-24//",
+ "-//w3c//dtd html 3.2 draft//",
+ "-//w3c//dtd html 3.2 final//",
+ "-//w3c//dtd html 3.2//",
+ "-//w3c//dtd html 3.2s draft//",
+ "-//w3c//dtd html 4.0 frameset//",
+ "-//w3c//dtd html 4.0 transitional//",
+ "-//w3c//dtd html experimental 19960712//",
+ "-//w3c//dtd html experimental 970421//",
+ "-//w3c//dtd w3 html//",
+ "-//w3o//dtd w3 html 3.0//",
+ "-//webtechs//dtd mozilla html 2.0//",
+ "-//webtechs//dtd mozilla html//"
+ ]) ||
+ const [
+ "-//w3o//dtd w3 html strict 3.0//en//",
+ "-/w3c/dtd html 4.0 transitional/en",
+ "html"
+ ].contains(publicId) ||
+ startsWithAny(publicId, const [
+ "-//w3c//dtd html 4.01 frameset//",
+ "-//w3c//dtd html 4.01 transitional//"
+ ]) &&
systemId == null ||
systemId != null &&
systemId.toLowerCase() ==
"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd") {
parser.compatMode = "quirks";
} else if (startsWithAny(publicId, const [
- "-//w3c//dtd xhtml 1.0 frameset//",
- "-//w3c//dtd xhtml 1.0 transitional//"
- ]) ||
+ "-//w3c//dtd xhtml 1.0 frameset//",
+ "-//w3c//dtd xhtml 1.0 transitional//"
+ ]) ||
startsWithAny(publicId, const [
- "-//w3c//dtd html 4.01 frameset//",
- "-//w3c//dtd html 4.01 transitional//"
- ]) &&
- systemId != null) {
+ "-//w3c//dtd html 4.01 frameset//",
+ "-//w3c//dtd html 4.01 transitional//"
+ ]) &&
+ systemId != null) {
parser.compatMode = "limited quirks";
}
parser.phase = parser._beforeHtmlPhase;
@@ -819,8 +828,8 @@
// helper methods
void insertHtmlElement() {
- tree.insertRoot(new StartTagToken("html",
- data: new LinkedHashMap<dynamic, String>()));
+ tree.insertRoot(
+ new StartTagToken("html", data: new LinkedHashMap<dynamic, String>()));
parser.phase = parser._beforeHeadPhase;
}
@@ -897,8 +906,8 @@
}
bool processEOF() {
- startTagHead(new StartTagToken("head",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagHead(
+ new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
return true;
}
@@ -907,8 +916,8 @@
}
Token processCharacters(CharactersToken token) {
- startTagHead(new StartTagToken("head",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagHead(
+ new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
return token;
}
@@ -923,14 +932,14 @@
}
Token startTagOther(StartTagToken token) {
- startTagHead(new StartTagToken("head",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagHead(
+ new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
return token;
}
Token endTagImplyHead(EndTagToken token) {
- startTagHead(new StartTagToken("head",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagHead(
+ new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
return token;
}
@@ -1152,9 +1161,8 @@
}
void startTagFromHead(StartTagToken token) {
- parser.parseError(token.span, "unexpected-start-tag-out-of-my-head", {
- "name": token.name
- });
+ parser.parseError(token.span, "unexpected-start-tag-out-of-my-head",
+ {"name": token.name});
tree.openElements.add(tree.headPointer);
parser._inHeadPhase.processStartTag(token);
for (var node in tree.openElements.reversed) {
@@ -1184,8 +1192,8 @@
}
void anythingElse() {
- tree.insertElement(new StartTagToken("body",
- data: new LinkedHashMap<dynamic, String>()));
+ tree.insertElement(
+ new StartTagToken("body", data: new LinkedHashMap<dynamic, String>()));
parser.phase = parser._inBodyPhase;
parser.framesetOK = true;
}
@@ -1661,8 +1669,8 @@
endTagP(new EndTagToken("p"));
}
if (headingElements.contains(tree.openElements.last.localName)) {
- parser.parseError(
- token.span, "unexpected-start-tag", {"name": token.name});
+ parser
+ .parseError(token.span, "unexpected-start-tag", {"name": token.name});
tree.openElements.removeLast();
}
tree.insertElement(token);
@@ -1671,10 +1679,8 @@
void startTagA(StartTagToken token) {
var afeAElement = tree.elementInActiveFormattingElements("a");
if (afeAElement != null) {
- parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
- "startName": "a",
- "endName": "a"
- });
+ parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+ {"startName": "a", "endName": "a"});
endTagFormatting(new EndTagToken("a"));
tree.openElements.remove(afeAElement);
tree.activeFormattingElements.remove(afeAElement);
@@ -1691,10 +1697,8 @@
void startTagNobr(StartTagToken token) {
tree.reconstructActiveFormattingElements();
if (tree.elementInScope("nobr")) {
- parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
- "startName": "nobr",
- "endName": "nobr"
- });
+ parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+ {"startName": "nobr", "endName": "nobr"});
processEndTag(new EndTagToken("nobr"));
// XXX Need tests that trigger the following
tree.reconstructActiveFormattingElements();
@@ -1704,10 +1708,8 @@
Token startTagButton(StartTagToken token) {
if (tree.elementInScope("button")) {
- parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
- "startName": "button",
- "endName": "button"
- });
+ parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+ {"startName": "button", "endName": "button"});
processEndTag(new EndTagToken("button"));
return token;
} else {
@@ -1780,10 +1782,8 @@
void startTagImage(StartTagToken token) {
// No really...
- parser.parseError(token.span, "unexpected-start-tag-treated-as", {
- "originalName": "image",
- "newName": "img"
- });
+ parser.parseError(token.span, "unexpected-start-tag-treated-as",
+ {"originalName": "image", "newName": "img"});
processStartTag(new StartTagToken("img",
data: token.data, selfClosing: token.selfClosing));
}
@@ -1799,10 +1799,10 @@
formAttrs["action"] = dataAction;
}
processStartTag(new StartTagToken("form", data: formAttrs));
- processStartTag(new StartTagToken("hr",
- data: new LinkedHashMap<dynamic, String>()));
- processStartTag(new StartTagToken("label",
- data: new LinkedHashMap<dynamic, String>()));
+ processStartTag(
+ new StartTagToken("hr", data: new LinkedHashMap<dynamic, String>()));
+ processStartTag(
+ new StartTagToken("label", data: new LinkedHashMap<dynamic, String>()));
// XXX Localization ...
var prompt = token.data["prompt"];
if (prompt == null) {
@@ -1813,11 +1813,11 @@
attributes.remove('action');
attributes.remove('prompt');
attributes["name"] = "isindex";
- processStartTag(new StartTagToken(
- "input", data: attributes, selfClosing: token.selfClosing));
+ processStartTag(new StartTagToken("input",
+ data: attributes, selfClosing: token.selfClosing));
processEndTag(new EndTagToken("label"));
- processStartTag(new StartTagToken("hr",
- data: new LinkedHashMap<dynamic, String>()));
+ processStartTag(
+ new StartTagToken("hr", data: new LinkedHashMap<dynamic, String>()));
processEndTag(new EndTagToken("form"));
}
@@ -1920,8 +1920,8 @@
void endTagP(EndTagToken token) {
if (!tree.elementInScope("p", variant: "button")) {
- startTagCloseP(new StartTagToken("p",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagCloseP(
+ new StartTagToken("p", data: new LinkedHashMap<dynamic, String>()));
parser.parseError(token.span, "unexpected-end-tag", {"name": "p"});
endTagP(new EndTagToken("p"));
} else {
@@ -1961,10 +1961,8 @@
continue;
}
// Not sure this is the correct name for the parse error
- parser.parseError(token.span, "expected-one-end-tag-but-got-another", {
- "gotName": "body",
- "expectedName": node.localName
- });
+ parser.parseError(token.span, "expected-one-end-tag-but-got-another",
+ {"gotName": "body", "expectedName": node.localName});
break;
}
}
@@ -2025,8 +2023,8 @@
} else {
tree.generateImpliedEndTags(token.name);
if (tree.openElements.last.localName != token.name) {
- parser.parseError(
- token.span, "end-tag-too-early", {"name": token.name});
+ parser
+ .parseError(token.span, "end-tag-too-early", {"name": token.name});
}
popOpenElementsUntil(token);
}
@@ -2175,13 +2173,8 @@
lastNode.parentNode.nodes.remove(lastNode);
}
- if (const [
- "table",
- "tbody",
- "tfoot",
- "thead",
- "tr"
- ].contains(commonAncestor.localName)) {
+ if (const ["table", "tbody", "tfoot", "thead", "tr"]
+ .contains(commonAncestor.localName)) {
var nodePos = tree.getTableMisnestedNodePosition();
nodePos[0].insertBefore(lastNode, nodePos[1]);
} else {
@@ -2199,13 +2192,13 @@
// Step 11
tree.activeFormattingElements.remove(formattingElement);
- tree.activeFormattingElements.insert(
- min(bookmark, tree.activeFormattingElements.length), clone);
+ tree.activeFormattingElements
+ .insert(min(bookmark, tree.activeFormattingElements.length), clone);
// Step 12
tree.openElements.remove(formattingElement);
- tree.openElements.insert(
- tree.openElements.indexOf(furthestBlock) + 1, clone);
+ tree.openElements
+ .insert(tree.openElements.indexOf(furthestBlock) + 1, clone);
}
}
@@ -2223,13 +2216,11 @@
}
void endTagBr(EndTagToken token) {
- parser.parseError(token.span, "unexpected-end-tag-treated-as", {
- "originalName": "br",
- "newName": "br element"
- });
+ parser.parseError(token.span, "unexpected-end-tag-treated-as",
+ {"originalName": "br", "newName": "br element"});
tree.reconstructActiveFormattingElements();
- tree.insertElement(new StartTagToken("br",
- data: new LinkedHashMap<dynamic, String>()));
+ tree.insertElement(
+ new StartTagToken("br", data: new LinkedHashMap<dynamic, String>()));
tree.openElements.removeLast();
}
@@ -2439,16 +2430,14 @@
}
Token startTagImplyTbody(StartTagToken token) {
- startTagRowGroup(new StartTagToken("tbody",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagRowGroup(
+ new StartTagToken("tbody", data: new LinkedHashMap<dynamic, String>()));
return token;
}
Token startTagTable(StartTagToken token) {
- parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
- "startName": "table",
- "endName": "table"
- });
+ parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+ {"startName": "table", "endName": "table"});
parser.phase.processEndTag(new EndTagToken("table"));
if (!parser.innerHTMLMode) {
return token;
@@ -2481,9 +2470,8 @@
}
void startTagOther(StartTagToken token) {
- parser.parseError(token.span, "unexpected-start-tag-implies-table-voodoo", {
- "name": token.name
- });
+ parser.parseError(token.span, "unexpected-start-tag-implies-table-voodoo",
+ {"name": token.name});
// Do the table magic!
tree.insertFromTable = true;
parser._inBodyPhase.processStartTag(token);
@@ -2495,10 +2483,8 @@
tree.generateImpliedEndTags();
var last = tree.openElements.last;
if (last.localName != "table") {
- parser.parseError(token.span, "end-tag-too-early-named", {
- "gotName": "table",
- "expectedName": last.localName
- });
+ parser.parseError(token.span, "end-tag-too-early-named",
+ {"gotName": "table", "expectedName": last.localName});
}
while (tree.openElements.last.localName != "table") {
tree.openElements.removeLast();
@@ -2518,9 +2504,8 @@
}
void endTagOther(EndTagToken token) {
- parser.parseError(token.span, "unexpected-end-tag-implies-table-voodoo", {
- "name": token.name
- });
+ parser.parseError(token.span, "unexpected-end-tag-implies-table-voodoo",
+ {"name": token.name});
// Do the table magic!
tree.insertFromTable = true;
parser._inBodyPhase.processEndTag(token);
@@ -2883,8 +2868,8 @@
Token startTagTableCell(StartTagToken token) {
parser.parseError(
token.span, "unexpected-cell-in-table-body", {"name": token.name});
- startTagTr(new StartTagToken("tr",
- data: new LinkedHashMap<dynamic, String>()));
+ startTagTr(
+ new StartTagToken("tr", data: new LinkedHashMap<dynamic, String>()));
return token;
}
@@ -2988,10 +2973,10 @@
var last = tree.openElements.last;
if (last.localName == "tr" || last.localName == "html") break;
- parser.parseError(last.sourceSpan,
- "unexpected-implied-end-tag-in-table-row", {
- "name": tree.openElements.last.localName
- });
+ parser.parseError(
+ last.sourceSpan,
+ "unexpected-implied-end-tag-in-table-row",
+ {"name": tree.openElements.last.localName});
tree.openElements.removeLast();
}
}
@@ -3391,10 +3376,10 @@
}
Token startTagTable(StartTagToken token) {
- parser.parseError(token.span,
- "unexpected-table-element-start-tag-in-select-in-table", {
- "name": token.name
- });
+ parser.parseError(
+ token.span,
+ "unexpected-table-element-start-tag-in-select-in-table",
+ {"name": token.name});
endTagOther(new EndTagToken("select"));
return token;
}
@@ -3404,10 +3389,10 @@
}
Token endTagTable(EndTagToken token) {
- parser.parseError(token.span,
- "unexpected-table-element-end-tag-in-select-in-table", {
- "name": token.name
- });
+ parser.parseError(
+ token.span,
+ "unexpected-table-element-end-tag-in-select-in-table",
+ {"name": token.name});
if (tree.elementInScope(token.name, variant: "table")) {
endTagOther(new EndTagToken("select"));
return token;
@@ -3789,9 +3774,8 @@
}
void startTagOther(StartTagToken token) {
- parser.parseError(token.span, "unexpected-start-tag-after-frameset", {
- "name": token.name
- });
+ parser.parseError(token.span, "unexpected-start-tag-after-frameset",
+ {"name": token.name});
}
void endTagHtml(EndTagToken token) {
diff --git a/lib/src/char_encodings.dart b/lib/src/char_encodings.dart
index 5ddf727..56680bd 100644
--- a/lib/src/char_encodings.dart
+++ b/lib/src/char_encodings.dart
@@ -21,7 +21,8 @@
/// Decodes the [bytes] with the provided [encoding] and returns an iterable for
/// the codepoints. Supports the major unicode encodings as well as ascii and
/// and windows-1252 encodings.
-Iterable<int> decodeBytes(String encoding, List<int> bytes, [int offset = 0,
+Iterable<int> decodeBytes(String encoding, List<int> bytes,
+ [int offset = 0,
int length,
int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
if (length == null) length = bytes.length;
@@ -99,7 +100,8 @@
/// needed. Set the [replacementCharacter] to null to throw an [ArgumentError]
/// rather than replace the bad value.
IterableWindows1252Decoder decodeWindows1252AsIterable(List<int> bytes,
- [int offset = 0, int length,
+ [int offset = 0,
+ int length,
int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
return new IterableWindows1252Decoder(
bytes, offset, length, replacementCodepoint);
@@ -114,7 +116,8 @@
final int length;
final int replacementCodepoint;
- IterableWindows1252Decoder(List<int> this.bytes, [int this.offset = 0,
+ IterableWindows1252Decoder(List<int> this.bytes,
+ [int this.offset = 0,
int this.length = null,
int this.replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]);
@@ -134,7 +137,9 @@
int _offset;
final int _length;
- Windows1252Decoder(List<int> bytes, [int offset = 0, int length,
+ Windows1252Decoder(List<int> bytes,
+ [int offset = 0,
+ int length,
this.replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT])
: _bytes = bytes,
_offset = offset - 1,
diff --git a/lib/src/constants.dart b/lib/src/constants.dart
index e85e43a..9f4878f 100644
--- a/lib/src/constants.dart
+++ b/lib/src/constants.dart
@@ -514,17 +514,27 @@
];
const Map<String, List<String>> booleanAttributes = const {
- "": const ["irrelevant",],
- "style": const ["scoped",],
- "img": const ["ismap",],
+ "": const [
+ "irrelevant",
+ ],
+ "style": const [
+ "scoped",
+ ],
+ "img": const [
+ "ismap",
+ ],
"audio": const ["autoplay", "controls"],
"video": const ["autoplay", "controls"],
"script": const ["defer", "async"],
- "details": const ["open",],
+ "details": const [
+ "open",
+ ],
"datagrid": const ["multiple", "disabled"],
"command": const ["hidden", "disabled", "checked", "default"],
"hr": const ["noshade"],
- "men": const ["autosubmit",],
+ "men": const [
+ "autosubmit",
+ ],
"fieldset": const ["disabled", "readonly"],
"option": const ["disabled", "readonly", "selected"],
"optgroup": const ["disabled", "readonly"],
diff --git a/lib/src/encoding_parser.dart b/lib/src/encoding_parser.dart
index 9da260b..21d6783 100644
--- a/lib/src/encoding_parser.dart
+++ b/lib/src/encoding_parser.dart
@@ -141,12 +141,12 @@
String getEncoding() {
final methodDispatch = [
- new _DispatchEntry("<!--", handleComment),
- new _DispatchEntry("<meta", handleMeta),
- new _DispatchEntry("</", handlePossibleEndTag),
- new _DispatchEntry("<!", handleOther),
- new _DispatchEntry("<?", handleOther),
- new _DispatchEntry("<", handlePossibleStartTag),
+ new _DispatchEntry("<!--", handleComment),
+ new _DispatchEntry("<meta", handleMeta),
+ new _DispatchEntry("</", handlePossibleEndTag),
+ new _DispatchEntry("<!", handleOther),
+ new _DispatchEntry("<?", handleOther),
+ new _DispatchEntry("<", handlePossibleStartTag),
];
try {
diff --git a/lib/src/inputstream.dart b/lib/src/inputstream.dart
index cb40bc9..849ed93 100644
--- a/lib/src/inputstream.dart
+++ b/lib/src/inputstream.dart
@@ -68,8 +68,11 @@
/// element)
///
/// [parseMeta] - Look for a <meta> element containing encoding information
- HtmlInputStream(source, [String encoding, bool parseMeta = true,
- this.generateSpans = false, this.sourceUrl])
+ HtmlInputStream(source,
+ [String encoding,
+ bool parseMeta = true,
+ this.generateSpans = false,
+ this.sourceUrl])
: charEncodingName = codecName(encoding) {
if (source is String) {
_rawChars = toCodepoints(source);
diff --git a/lib/src/list_proxy.dart b/lib/src/list_proxy.dart
index 5df1ed4..7c6e612 100644
--- a/lib/src/list_proxy.dart
+++ b/lib/src/list_proxy.dart
@@ -9,7 +9,6 @@
// TOOD(jmesserly): this needs to be removed, but fixing NodeList is tricky.
class ListProxy<E> extends IterableBase<E> implements List<E> {
-
/// The inner [List<T>] with the actual storage.
final List<E> _list;
@@ -48,9 +47,11 @@
operator []=(int index, E value) {
_list[index] = value;
}
+
set length(int value) {
_list.length = value;
}
+
void add(E value) {
_list.add(value);
}
@@ -58,12 +59,15 @@
void addLast(E value) {
add(value);
}
+
void addAll(Iterable<E> collection) {
_list.addAll(collection);
}
+
void sort([int compare(E a, E b)]) {
_list.sort(compare);
}
+
void shuffle([Random random]) {
_list.shuffle(random);
}
@@ -87,9 +91,11 @@
void setRange(int start, int length, Iterable<E> from, [int startFrom = 0]) {
_list.setRange(start, length, from, startFrom);
}
+
void removeRange(int start, int length) {
_list.removeRange(start, length);
}
+
void insertAll(int index, Iterable<E> iterable) {
_list.insertAll(index, iterable);
}
diff --git a/lib/src/query_selector.dart b/lib/src/query_selector.dart
index 3aa45f2..5c438db 100644
--- a/lib/src/query_selector.dart
+++ b/lib/src/query_selector.dart
@@ -16,8 +16,8 @@
List<Element> querySelectorAll(Node node, String selector) {
var results = <Element>[];
- new SelectorEvaluator().querySelectorAll(
- node, _parseSelectorList(selector), results);
+ new SelectorEvaluator()
+ .querySelectorAll(node, _parseSelectorList(selector), results);
return results;
}
@@ -124,9 +124,9 @@
return result;
}
- _unimplemented(SimpleSelector selector) => new UnimplementedError(
- "'$selector' selector of type "
- "${selector.runtimeType} is not implemented");
+ _unimplemented(SimpleSelector selector) =>
+ new UnimplementedError("'$selector' selector of type "
+ "${selector.runtimeType} is not implemented");
_unsupported(selector) =>
new FormatException("'$selector' is not a valid selector");
diff --git a/lib/src/token.dart b/lib/src/token.dart
index 9a2843c..877a6a3 100644
--- a/lib/src/token.dart
+++ b/lib/src/token.dart
@@ -32,8 +32,11 @@
/// The namespace. This is filled in later during tree building.
String namespace;
- StartTagToken(String name, {this.data, bool selfClosing: false,
- this.selfClosingAcknowledged: false, this.namespace})
+ StartTagToken(String name,
+ {this.data,
+ bool selfClosing: false,
+ this.selfClosingAcknowledged: false,
+ this.namespace})
: super(name, selfClosing);
int get kind => TokenKind.startTag;
diff --git a/lib/src/tokenizer.dart b/lib/src/tokenizer.dart
index 68cb6dc..21505df 100644
--- a/lib/src/tokenizer.dart
+++ b/lib/src/tokenizer.dart
@@ -65,11 +65,16 @@
List<TagAttribute> _attributes;
Set<String> _attributeNames;
- HtmlTokenizer(doc, {String encoding, bool parseMeta: true,
- this.lowercaseElementName: true, this.lowercaseAttrName: true,
- bool generateSpans: false, String sourceUrl, this.attributeSpans: false})
+ HtmlTokenizer(doc,
+ {String encoding,
+ bool parseMeta: true,
+ this.lowercaseElementName: true,
+ this.lowercaseAttrName: true,
+ bool generateSpans: false,
+ String sourceUrl,
+ this.attributeSpans: false})
: stream = new HtmlInputStream(
- doc, encoding, parseMeta, generateSpans, sourceUrl),
+ doc, encoding, parseMeta, generateSpans, sourceUrl),
tokenQueue = new Queue(),
generateSpans = generateSpans {
reset();
@@ -200,42 +205,42 @@
(0x007F <= charAsInt && charAsInt <= 0x009F) ||
(0xFDD0 <= charAsInt && charAsInt <= 0xFDEF) ||
const [
- 0x000B,
- 0xFFFE,
- 0xFFFF,
- 0x1FFFE,
- 0x1FFFF,
- 0x2FFFE,
- 0x2FFFF,
- 0x3FFFE,
- 0x3FFFF,
- 0x4FFFE,
- 0x4FFFF,
- 0x5FFFE,
- 0x5FFFF,
- 0x6FFFE,
- 0x6FFFF,
- 0x7FFFE,
- 0x7FFFF,
- 0x8FFFE,
- 0x8FFFF,
- 0x9FFFE,
- 0x9FFFF,
- 0xAFFFE,
- 0xAFFFF,
- 0xBFFFE,
- 0xBFFFF,
- 0xCFFFE,
- 0xCFFFF,
- 0xDFFFE,
- 0xDFFFF,
- 0xEFFFE,
- 0xEFFFF,
- 0xFFFFE,
- 0xFFFFF,
- 0x10FFFE,
- 0x10FFFF
- ].contains(charAsInt)) {
+ 0x000B,
+ 0xFFFE,
+ 0xFFFF,
+ 0x1FFFE,
+ 0x1FFFF,
+ 0x2FFFE,
+ 0x2FFFF,
+ 0x3FFFE,
+ 0x3FFFF,
+ 0x4FFFE,
+ 0x4FFFF,
+ 0x5FFFE,
+ 0x5FFFF,
+ 0x6FFFE,
+ 0x6FFFF,
+ 0x7FFFE,
+ 0x7FFFF,
+ 0x8FFFE,
+ 0x8FFFF,
+ 0x9FFFE,
+ 0x9FFFF,
+ 0xAFFFE,
+ 0xAFFFF,
+ 0xBFFFE,
+ 0xBFFFF,
+ 0xCFFFE,
+ 0xCFFFF,
+ 0xDFFFE,
+ 0xDFFFF,
+ 0xEFFFE,
+ 0xEFFFF,
+ 0xFFFFE,
+ 0xFFFFF,
+ 0x10FFFE,
+ 0x10FFFF
+ ].contains(charAsInt)) {
_addToken(new ParseErrorToken("illegal-codepoint-for-numeric-entity",
messageParams: {"charAsInt": charAsInt}));
}
diff --git a/lib/src/treebuilder.dart b/lib/src/treebuilder.dart
index 6be687e..ac71e48 100644
--- a/lib/src/treebuilder.dart
+++ b/lib/src/treebuilder.dart
@@ -378,16 +378,8 @@
var name = openElements.last.localName;
// XXX td, th and tr are not actually needed
if (name != exclude &&
- const [
- "dd",
- "dt",
- "li",
- "option",
- "optgroup",
- "p",
- "rp",
- "rt"
- ].contains(name)) {
+ const ["dd", "dt", "li", "option", "optgroup", "p", "rp", "rt"]
+ .contains(name)) {
openElements.removeLast();
// XXX This is not entirely what the specification says. We should
// investigate it more closely.
diff --git a/test/parser_feature_test.dart b/test/parser_feature_test.dart
index 43a3426..d185a14 100644
--- a/test/parser_feature_test.dart
+++ b/test/parser_feature_test.dart
@@ -234,7 +234,9 @@
expect(keys[0].namespace, 'http://www.w3.org/1999/xlink');
expect(keys[0].name, 'type');
- expect(n.outerHtml, '<desc xlink:type="simple" '
+ expect(
+ n.outerHtml,
+ '<desc xlink:type="simple" '
'xlink:href="http://example.com/logo.png" xlink:show="new"></desc>');
});
});
@@ -247,7 +249,8 @@
expect(parser.errors[0].errorCode, 'expected-doctype-but-got-chars');
expect(parser.errors[0].message,
'Unexpected non-space characters. Expected DOCTYPE.');
- expect(parser.errors[0].toString(),
+ expect(
+ parser.errors[0].toString(),
'ParserError on line 1, column 4: Unexpected non-space characters. '
'Expected DOCTYPE.\n'
'foo\n'
diff --git a/test/parser_test.dart b/test/parser_test.dart
index 6f81086..516a0f4 100644
--- a/test/parser_test.dart
+++ b/test/parser_test.dart
@@ -30,10 +30,14 @@
return lines.join("\n");
}
-void runParserTest(String groupName, String innerHTML, String input,
- String expected, List errors, TreeBuilderFactory treeCtor,
+void runParserTest(
+ String groupName,
+ String innerHTML,
+ String input,
+ String expected,
+ List errors,
+ TreeBuilderFactory treeCtor,
bool namespaceHTMLElements) {
-
// XXX - move this out into the setup function
// concatenate all consecutive character tokens into a single token
var builder = treeCtor(namespaceHTMLElements);
@@ -53,14 +57,15 @@
}
expect(output, equals(expected),
- reason: "\n\nInput:\n$input\n\nExpected:\n$expected\n\nReceived:\n$output");
+ reason:
+ "\n\nInput:\n$input\n\nExpected:\n$expected\n\nReceived:\n$output");
if (checkParseErrors) {
expect(parser.errors.length, equals(errors.length),
reason: "\n\nInput:\n$input\n\nExpected errors (${errors.length}):\n"
- "${errors.join('\n')}\n\n"
- "Actual errors (${parser.errors.length}):\n"
- "${parser.errors.map((e) => '$e').join('\n')}");
+ "${errors.join('\n')}\n\n"
+ "Actual errors (${parser.errors.length}):\n"
+ "${parser.errors.map((e) => '$e').join('\n')}");
}
}
diff --git a/test/selectors/level1_lib.dart b/test/selectors/level1_lib.dart
index 3191353..34b7c75 100644
--- a/test/selectors/level1_lib.dart
+++ b/test/selectors/level1_lib.dart
@@ -155,8 +155,8 @@
var elm = root.querySelector('undefined');
assert_not_equals(elm, 'undefined', "This should find an element.");
// TODO(jmesserly): change "localName" back to "tagName" once implemented.
- assert_equals(elm.localName.toUpperCase(),
- "UNDEFINED", "The tag name should be 'UNDEFINED'.");
+ assert_equals(elm.localName.toUpperCase(), "UNDEFINED",
+ "The tag name should be 'UNDEFINED'.");
}, type + ".querySelector undefined");
test(() {