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

Unified Diff: third_party/pkg/angular/lib/core_dom/selector.dart

Issue 180843004: Revert revision 33053 (Closed) Base URL: http://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: third_party/pkg/angular/lib/core_dom/selector.dart
===================================================================
--- third_party/pkg/angular/lib/core_dom/selector.dart (revision 33054)
+++ third_party/pkg/angular/lib/core_dom/selector.dart (working copy)
@@ -32,7 +32,7 @@
final Type type;
final NgAnnotation annotation;
- _Directive(this.type, this.annotation);
+ _Directive(Type this.type, NgAnnotation this.annotation);
toString() => annotation.selector;
}
@@ -42,15 +42,13 @@
final NgAnnotation annotation;
final RegExp regexp;
- _ContainsSelector(this.annotation, String regexp)
- : regexp = new RegExp(regexp);
+ _ContainsSelector(this.annotation, String regexp) : regexp = new RegExp(regexp);
}
-var _SELECTOR_REGEXP = new RegExp(r'^(?:([\w\-]+)|(?:\.([\w\-]+))|'
- r'(?:\[([\w\-\*]+)(?:=([^\]]*))?\]))');
-var _COMMENT_COMPONENT_REGEXP = new RegExp(r'^\[([\w\-]+)(?:\=(.*))?\]$');
-var _CONTAINS_REGEXP = new RegExp(r'^:contains\(\/(.+)\/\)$'); //
-var _ATTR_CONTAINS_REGEXP = new RegExp(r'^\[\*=\/(.+)\/\]$'); //
+RegExp _SELECTOR_REGEXP = new RegExp(r'^(?:([\w\-]+)|(?:\.([\w\-]+))|(?:\[([\w\-\*]+)(?:=([^\]]*))?\]))');
+RegExp _COMMENT_COMPONENT_REGEXP = new RegExp(r'^\[([\w\-]+)(?:\=(.*))?\]$');
+RegExp _CONTAINS_REGEXP = new RegExp(r'^:contains\(\/(.+)\/\)$'); //
+RegExp _ATTR_CONTAINS_REGEXP = new RegExp(r'^\[\*=\/(.+)\/\]$'); //
class _SelectorPart {
final String element;
@@ -58,14 +56,14 @@
final String attrName;
final String attrValue;
- const _SelectorPart.fromElement(this.element)
+ const _SelectorPart.fromElement(String this.element)
: className = null, attrName = null, attrValue = null;
- const _SelectorPart.fromClass(this.className)
+ const _SelectorPart.fromClass(String this.className)
: element = null, attrName = null, attrValue = null;
- const _SelectorPart.fromAttribute(this.attrName, this.attrValue)
+ const _SelectorPart.fromAttribute(String this.attrName, String this.attrValue)
: element = null, className = null;
toString() =>
@@ -78,16 +76,16 @@
class _ElementSelector {
- final String name;
+ String name;
- var elementMap = <String, List<_Directive>>{};
- var elementPartialMap = <String, _ElementSelector>{};
+ Map<String, _Directive> elementMap = new Map<String, _Directive>();
+ Map<String, _ElementSelector> elementPartialMap = new Map<String, _ElementSelector>();
- var classMap = <String, List<_Directive>>{};
- var classPartialMap = <String, _ElementSelector>{};
+ Map<String, _Directive> classMap = new Map<String, _Directive>();
+ Map<String, _ElementSelector> classPartialMap = new Map<String, _ElementSelector>();
- var attrValueMap = <String, Map<String, List<_Directive>>>{};
- var attrValuePartialMap = <String, Map<String, _ElementSelector>>{};
+ Map<String, Map<String, _Directive>> attrValueMap = new Map<String, Map<String, _Directive>>();
+ Map<String, Map<String, _ElementSelector>> attrValuePartialMap = new Map<String, Map<String, _ElementSelector>>();
_ElementSelector(this.name);
@@ -97,9 +95,7 @@
var name;
if ((name = selectorPart.element) != null) {
if (terminal) {
- elementMap
- .putIfAbsent(name, () => [])
- .add(directive);
+ elementMap[name] = directive;
} else {
elementPartialMap
.putIfAbsent(name, () => new _ElementSelector(name))
@@ -107,9 +103,7 @@
}
} else if ((name = selectorPart.className) != null) {
if (terminal) {
- classMap
- .putIfAbsent(name, () => [])
- .add(directive);
+ classMap[name] = directive;
} else {
classPartialMap
.putIfAbsent(name, () => new _ElementSelector(name))
@@ -118,14 +112,12 @@
} else if ((name = selectorPart.attrName) != null) {
if (terminal) {
attrValueMap
- .putIfAbsent(name, () => <String, List<_Directive>>{})
- .putIfAbsent(selectorPart.attrValue, () => [])
- .add(directive);
+ .putIfAbsent(name, () => new Map<String, _Directive>())
+ [selectorPart.attrValue] = directive;
} else {
attrValuePartialMap
- .putIfAbsent(name, () => <String, _ElementSelector>{})
- .putIfAbsent(selectorPart.attrValue, () =>
- new _ElementSelector(name))
+ .putIfAbsent(name, () => new Map<String, _ElementSelector>())
+ .putIfAbsent(selectorPart.attrValue, () => new _ElementSelector(name))
.addDirective(selectorParts, directive);
}
} else {
@@ -133,88 +125,73 @@
}
}
- _addRefs(List<DirectiveRef> refs, List<_Directive> directives, dom.Node node,
- [String attrValue]) {
- directives.forEach((directive) =>
- refs.add(new DirectiveRef(node, directive.type, directive.annotation,
- attrValue)));
- }
-
- List<_ElementSelector> selectNode(List<DirectiveRef> refs,
- List<_ElementSelector> partialSelection,
- dom.Node node, String nodeName) {
+ List<_ElementSelector> selectNode(List<DirectiveRef> refs, List<_ElementSelector> partialSelection,
+ dom.Node node, String nodeName) {
if (elementMap.containsKey(nodeName)) {
- _addRefs(refs, elementMap[nodeName], node);
+ _Directive directive = elementMap[nodeName];
+ refs.add(new DirectiveRef(node, directive.type, directive.annotation));
}
if (elementPartialMap.containsKey(nodeName)) {
- if (partialSelection == null) {
- partialSelection = new List<_ElementSelector>();
- }
+ if (partialSelection == null) partialSelection = new List<_ElementSelector>();
partialSelection.add(elementPartialMap[nodeName]);
}
return partialSelection;
}
- List<_ElementSelector> selectClass(List<DirectiveRef> refs,
- List<_ElementSelector> partialSelection,
- dom.Node node, String className) {
+ List<_ElementSelector> selectClass(List<DirectiveRef> refs, List<_ElementSelector> partialSelection,
+ dom.Node node, String className) {
if (classMap.containsKey(className)) {
- _addRefs(refs, classMap[className], node);
+ var directive = classMap[className];
+ refs.add(new DirectiveRef(node, directive.type, directive.annotation));
}
if (classPartialMap.containsKey(className)) {
- if (partialSelection == null) {
- partialSelection = new List<_ElementSelector>();
- }
+ if (partialSelection == null) partialSelection = new List<_ElementSelector>();
partialSelection.add(classPartialMap[className]);
}
return partialSelection;
}
- List<_ElementSelector> selectAttr(List<DirectiveRef> refs,
- List<_ElementSelector> partialSelection,
- dom.Node node, String attrName,
- String attrValue) {
+ List<_ElementSelector> selectAttr(List<DirectiveRef> refs, List<_ElementSelector> partialSelection,
+ dom.Node node, String attrName, String attrValue) {
String matchingKey = _matchingKey(attrValueMap.keys, attrName);
if (matchingKey != null) {
- Map<String, List<_Directive>> valuesMap = attrValueMap[matchingKey];
+ Map<String, _Directive> valuesMap = attrValueMap[matchingKey];
if (valuesMap.containsKey('')) {
- _addRefs(refs, valuesMap[''], node, attrValue);
+ _Directive directive = valuesMap[''];
+ refs.add(new DirectiveRef(node, directive.type, directive.annotation, attrValue));
}
if (attrValue != '' && valuesMap.containsKey(attrValue)) {
- _addRefs(refs, valuesMap[attrValue], node, attrValue);
+ _Directive directive = valuesMap[attrValue];
+ refs.add(new DirectiveRef(node, directive.type, directive.annotation, attrValue));
}
}
if (attrValuePartialMap.containsKey(attrName)) {
- Map<String, _ElementSelector> valuesPartialMap =
- attrValuePartialMap[attrName];
+ Map<String, _ElementSelector> valuesPartialMap = attrValuePartialMap[attrName];
if (valuesPartialMap.containsKey('')) {
- if (partialSelection == null) {
- partialSelection = new List<_ElementSelector>();
- }
+ if (partialSelection == null) partialSelection = new List<_ElementSelector>();
partialSelection.add(valuesPartialMap['']);
}
if (attrValue != '' && valuesPartialMap.containsKey(attrValue)) {
- if (partialSelection == null) {
- partialSelection = new List<_ElementSelector>();
- }
+ if (partialSelection == null) partialSelection = new List<_ElementSelector>();
partialSelection.add(valuesPartialMap[attrValue]);
}
}
return partialSelection;
}
- String _matchingKey(Iterable<String> keys, String attrName) =>
- keys.firstWhere((key) =>
- new RegExp('^${key.replaceAll('*', r'[\w\-]+')}\$')
- .hasMatch(attrName), orElse: () => null);
+ String _matchingKey(Iterable<String> keys, String attrName) {
+ return keys.firstWhere(
+ (key) => new RegExp('^${key.replaceAll('*', r'[\w\-]+')}\$').hasMatch(attrName),
+ orElse: () => null);
+ }
toString() => 'ElementSelector($name)';
}
List<_SelectorPart> _splitCss(String selector, Type type) {
- var parts = <_SelectorPart>[];
+ List<_SelectorPart> parts = [];
var remainder = selector;
var match;
while (!remainder.isEmpty) {
@@ -243,9 +220,9 @@
*/
DirectiveSelector directiveSelectorFactory(DirectiveMap directives) {
- var elementSelector = new _ElementSelector('');
- var attrSelector = <_ContainsSelector>[];
- var textSelector = <_ContainsSelector>[];
+ _ElementSelector elementSelector = new _ElementSelector('');
+ List<_ContainsSelector> attrSelector = [];
+ List<_ContainsSelector> textSelector = [];
directives.forEach((NgAnnotation annotation, Type type) {
var match;
var selector = annotation.selector;
@@ -259,18 +236,17 @@
} else if ((match = _ATTR_CONTAINS_REGEXP.firstMatch(selector)) != null) {
attrSelector.add(new _ContainsSelector(annotation, match[1]));
} else if ((selectorParts = _splitCss(selector, type)) != null){
- elementSelector.addDirective(selectorParts,
- new _Directive(type, annotation));
+ elementSelector.addDirective(selectorParts, new _Directive(type, annotation));
} else {
throw new ArgumentError('Unsupported Selector: $selector');
}
});
return (dom.Node node) {
- var directiveRefs = <DirectiveRef>[];
- List<_ElementSelector> partialSelection;
- var classes = <String, bool>{};
- var attrs = <String, String>{};
+ List<DirectiveRef> directiveRefs = [];
+ List<_ElementSelector> partialSelection = null;
+ Map<String, bool> classes = new Map<String, bool>();
+ Map<String, String> attrs = new Map<String, String>();
switch(node.nodeType) {
case 1: // Element
@@ -278,33 +254,26 @@
String nodeName = element.tagName.toLowerCase();
Map<String, String> attrs = {};
- // Set default attribute
- if (nodeName == 'input' && !element.attributes.containsKey('type')) {
- element.attributes['type'] = 'text';
- }
-
// Select node
- partialSelection = elementSelector.selectNode(directiveRefs,
- partialSelection, element, nodeName);
+ partialSelection = elementSelector.selectNode(directiveRefs, partialSelection, element, nodeName);
// Select .name
if ((element.classes) != null) {
- for (var name in element.classes) {
+ for(var name in element.classes) {
classes[name] = true;
- partialSelection = elementSelector.selectClass(directiveRefs,
- partialSelection, element, name);
+ partialSelection = elementSelector.selectClass(directiveRefs, partialSelection, element, name);
}
}
// Select [attributes]
- element.attributes.forEach((attrName, value) {
+ element.attributes.forEach((attrName, value){
attrs[attrName] = value;
- for (var k = 0; k < attrSelector.length; k++) {
+ for(var k = 0, kk = attrSelector.length; k < kk; k++) {
_ContainsSelector selectorRegExp = attrSelector[k];
if (selectorRegExp.regexp.hasMatch(value)) {
// this directive is matched on any attribute name, and so
- // we need to pass the name to the directive by prefixing it to
- // the value. Yes it is a bit of a hack.
+ // we need to pass the name to the directive by prefixing it to the
+ // value. Yes it is a bit of a hack.
directives[selectorRegExp.annotation].forEach((type) {
directiveRefs.add(new DirectiveRef(
node, type, selectorRegExp.annotation, '$attrName=$value'));
@@ -312,8 +281,7 @@
}
}
- partialSelection = elementSelector.selectAttr(directiveRefs,
- partialSelection, node, attrName, value);
+ partialSelection = elementSelector.selectAttr(directiveRefs, partialSelection, node, attrName, value);
});
while(partialSelection != null) {
@@ -321,25 +289,21 @@
partialSelection = null;
elementSelectors.forEach((_ElementSelector elementSelector) {
classes.forEach((className, _) {
- partialSelection = elementSelector.selectClass(directiveRefs,
- partialSelection, node, className);
+ partialSelection = elementSelector.selectClass(directiveRefs, partialSelection, node, className);
});
attrs.forEach((attrName, value) {
- partialSelection = elementSelector.selectAttr(directiveRefs,
- partialSelection, node, attrName, value);
+ partialSelection = elementSelector.selectAttr(directiveRefs, partialSelection, node, attrName, value);
});
});
}
break;
case 3: // Text Node
- var value = node.nodeValue;
- for (var k = 0; k < textSelector.length; k++) {
- var selectorRegExp = textSelector[k];
+ for(var value = node.nodeValue, k = 0, kk = textSelector.length; k < kk; k++) {
+ var selectorRegExp = textSelector[k];
if (selectorRegExp.regexp.hasMatch(value)) {
directives[selectorRegExp.annotation].forEach((type) {
- directiveRefs.add(new DirectiveRef(node, type,
- selectorRegExp.annotation, value));
+ directiveRefs.add(new DirectiveRef(node, type, selectorRegExp.annotation, value));
});
}
}
« no previous file with comments | « third_party/pkg/angular/lib/core_dom/node_cursor.dart ('k') | third_party/pkg/angular/lib/directive/input_select.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698