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

Side by Side Diff: third_party/pkg/angular/lib/tools/selector.dart

Issue 148453003: Updating Angular version (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library selector; 1 library selector;
2 2
3 import 'package:html5lib/dom.dart'; 3 import 'package:html5lib/dom.dart';
4 4
5 class ContainsSelector { 5 class ContainsSelector {
6 String selector; 6 String selector;
7 RegExp regexp; 7 RegExp regexp;
8 8
9 ContainsSelector(this.selector, regexp) { 9 ContainsSelector(this.selector, regexp) {
10 this.regexp = new RegExp(regexp); 10 this.regexp = new RegExp(regexp);
11 } 11 }
12 } 12 }
13 13
14 RegExp _SELECTOR_REGEXP = new RegExp(r'^(?:([\w\-]+)|(?:\.([\w\-]+))|(?:\[([\w\- ]+)(?:=([^\]]*))?\]))'); 14 RegExp _SELECTOR_REGEXP = new RegExp(r'^(?:([\w\-]+)|(?:\.([\w\-]+))|(?:\[([\w\- \*]+)(?:=([^\]]*))?\]))');
15 RegExp _COMMENT_COMPONENT_REGEXP = new RegExp(r'^\[([\w\-]+)(?:\=(.*))?\]$'); 15 RegExp _COMMENT_COMPONENT_REGEXP = new RegExp(r'^\[([\w\-]+)(?:\=(.*))?\]$');
16 RegExp _CONTAINS_REGEXP = new RegExp(r'^:contains\(\/(.+)\/\)$'); // 16 RegExp _CONTAINS_REGEXP = new RegExp(r'^:contains\(\/(.+)\/\)$'); //
17 RegExp _ATTR_CONTAINS_REGEXP = new RegExp(r'^\[\*=\/(.+)\/\]$'); // 17 RegExp _ATTR_CONTAINS_REGEXP = new RegExp(r'^\[\*=\/(.+)\/\]$'); //
18 18
19 class _SelectorPart { 19 class _SelectorPart {
20 final String element; 20 final String element;
21 final String className; 21 final String className;
22 final String attrName; 22 final String attrName;
23 final String attrValue; 23 final String attrValue;
24 24
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 if (part.element != null) { 94 if (part.element != null) {
95 if (nodeName != part.element) { 95 if (nodeName != part.element) {
96 stillGood = false; 96 stillGood = false;
97 } 97 }
98 } else if (part.className != null) { 98 } else if (part.className != null) {
99 if (node.attributes['class'] == null || 99 if (node.attributes['class'] == null ||
100 !node.attributes['class'].split(' ').contains(part.className)) { 100 !node.attributes['class'].split(' ').contains(part.className)) {
101 stillGood = false; 101 stillGood = false;
102 } 102 }
103 } else if (part.attrName != null) { 103 } else if (part.attrName != null) {
104 if (part.attrValue == '' ? 104 String matchingKey = _matchingKey(node.attributes.keys, part.attrName);
105 node.attributes[part.attrName] == null : 105 if (matchingKey == null || part.attrValue == '' ?
106 node.attributes[part.attrName] != part.attrValue) { 106 node.attributes[matchingKey] == null :
107 node.attributes[matchingKey] != part.attrValue) {
107 stillGood = false; 108 stillGood = false;
108 } 109 }
109 } 110 }
110 }); 111 });
111 112
112 return stillGood; 113 return stillGood;
113 } else { 114 } else {
114 throw new ArgumentError('Unsupported Selector: $selector'); 115 throw new ArgumentError('Unsupported Selector: $selector');
115 } 116 }
116 117
117 switch(node.nodeType) { 118 switch(node.nodeType) {
118 case 1: // Element 119 case 1: // Element
119 break; 120 break;
120 case 3: // Text Node 121 case 3: // Text Node
121 break; 122 break;
122 } 123 }
123 return false; 124 return false;
124 } 125 }
126
127 String _matchingKey(Iterable keys, String attrName) =>
128 keys.firstWhere(
129 (key) => new RegExp('^${attrName.replaceAll('*', r'[\w\-]+')}\$').hasMat ch(key.toString()),
130 orElse: () => null);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698