Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(443)

Unified Diff: pkg/third_party/html5lib/lib/src/treebuilder.dart

Issue 178303009: [html5lib] api updates: localName (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/third_party/html5lib/lib/src/treebuilder.dart
diff --git a/pkg/third_party/html5lib/lib/src/treebuilder.dart b/pkg/third_party/html5lib/lib/src/treebuilder.dart
index 8c4d235a15bf1950711610a89eb86e07a0eae837..708c08c7b797bf3f22404974841074577786035f 100644
--- a/pkg/third_party/html5lib/lib/src/treebuilder.dart
+++ b/pkg/third_party/html5lib/lib/src/treebuilder.dart
@@ -3,6 +3,7 @@ library treebuilder;
import 'dart:collection';
import 'package:html5lib/dom.dart';
+import 'package:html5lib/parser.dart' show getElementNameTuple;
import 'package:source_maps/span.dart' show FileSpan;
import 'constants.dart';
import 'list_proxy.dart';
@@ -14,18 +15,18 @@ import 'utils.dart';
// from "leaking" into tables, object elements, and marquees.
const Node Marker = null;
-// TODO(jmesserly): this should extend ListBase<Node>, but my simple attempt
+// TODO(jmesserly): this should extend ListBase<Element>, but my simple attempt
// didn't work.
-class ActiveFormattingElements extends ListProxy<Node> {
+class ActiveFormattingElements extends ListProxy<Element> {
ActiveFormattingElements() : super();
// Override the "add" method.
// TODO(jmesserly): I'd rather not override this; can we do this in the
// calling code instead?
- void add(Node node) {
+ void add(Element node) {
int equalCount = 0;
if (node != Marker) {
- for (Node element in reversed) {
+ for (var element in reversed) {
if (element == Marker) {
break;
}
@@ -61,8 +62,8 @@ bool _mapEquals(Map a, Map b) {
}
-bool _nodesEqual(Node node1, Node node2) {
- return node1.nameTuple == node2.nameTuple &&
+bool _nodesEqual(Element node1, Element node2) {
+ return getElementNameTuple(node1) == getElementNameTuple(node2) &&
_mapEquals(node1.attributes, node2.attributes);
}
@@ -72,7 +73,7 @@ class TreeBuilder {
Document document;
- final openElements = <Node>[];
+ final List<Element> openElements = <Element>[];
final activeFormattingElements = new ActiveFormattingElements();
@@ -105,7 +106,7 @@ class TreeBuilder {
bool elementInScope(target, {String variant}) {
//If we pass a node in we match that. if we pass a string
//match any node with that name
- bool exactNode = target is Node && target.nameTuple != null;
+ bool exactNode = target is Node;
List listElements1 = scopingElements;
List listElements2 = const [];
@@ -133,13 +134,13 @@ class TreeBuilder {
}
}
- for (Node node in openElements.reversed) {
- if (node.tagName == target && !exactNode ||
- node == target && exactNode) {
+ for (var node in openElements.reversed) {
+ if (!exactNode && node.localName == target ||
+ exactNode && node == target) {
return true;
} else if (invert !=
- (listElements1.contains(node.nameTuple) ||
- listElements2.contains(node.nameTuple))) {
+ (listElements1.contains(getElementNameTuple(node)) ||
+ listElements2.contains(getElementNameTuple(node)))) {
return false;
}
}
@@ -185,8 +186,8 @@ class TreeBuilder {
// TODO(jmesserly): optimize this. No need to create a token.
var cloneToken = new StartTagToken(
- entry.tagName,
- namespace: entry.namespace,
+ entry.localName,
+ namespace: entry.namespaceUri,
data: new LinkedHashMap.from(entry.attributes))
..span = entry.sourceSpan;
@@ -213,13 +214,13 @@ class TreeBuilder {
/// Check if an element exists between the end of the active
/// formatting elements and the last marker. If it does, return it, else
/// return null.
- Node elementInActiveFormattingElements(String name) {
- for (Node item in activeFormattingElements.reversed) {
+ Element elementInActiveFormattingElements(String name) {
+ for (var item in activeFormattingElements.reversed) {
// Check for Marker first because if it's a Marker it doesn't have a
// name attribute.
if (item == Marker) {
break;
- } else if (item.tagName == name) {
+ } else if (item.localName == name) {
return item;
}
}
@@ -276,7 +277,7 @@ class TreeBuilder {
Element insertElementTable(token) {
/// Create an element and insert it into the tree
var element = createElement(token);
- if (!tableInsertModeElements.contains(openElements.last.tagName)) {
+ if (!tableInsertModeElements.contains(openElements.last.localName)) {
return insertElementNormal(token);
} else {
// We should be in the InTable mode. This means we want to do
@@ -300,7 +301,7 @@ class TreeBuilder {
var parent = openElements.last;
if (!insertFromTable || insertFromTable &&
- !tableInsertModeElements.contains(openElements.last.tagName)) {
+ !tableInsertModeElements.contains(openElements.last.localName)) {
_insertText(parent, data, span);
} else {
// We should be in the InTable mode. This means we want to do
@@ -347,8 +348,8 @@ class TreeBuilder {
Node lastTable = null;
Node fosterParent = null;
var insertBefore = null;
- for (Node elm in openElements.reversed) {
- if (elm.tagName == "table") {
+ for (var elm in openElements.reversed) {
+ if (elm.localName == "table") {
lastTable = elm;
break;
}
@@ -369,7 +370,7 @@ class TreeBuilder {
}
void generateImpliedEndTags([String exclude]) {
- var name = openElements.last.tagName;
+ 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)) {
« no previous file with comments | « pkg/third_party/html5lib/lib/src/tokenizer.dart ('k') | pkg/third_party/html5lib/test/parser_feature_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698