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

Side by Side Diff: packages/html/lib/src/query_selector.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 years, 4 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
« no previous file with comments | « packages/html/lib/src/list_proxy.dart ('k') | packages/html/lib/src/tokenizer.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /// Query selector implementation for our DOM. 1 /// Query selector implementation for our DOM.
2 library html.src.query; 2 library html.src.query;
3 3
4 import 'package:csslib/parser.dart' as css; 4 import 'package:csslib/parser.dart' as css;
5 import 'package:csslib/parser.dart' show TokenKind; 5 import 'package:csslib/parser.dart' show TokenKind;
6 import 'package:csslib/src/messages.dart' show Message;
6 import 'package:csslib/visitor.dart'; // the CSSOM 7 import 'package:csslib/visitor.dart'; // the CSSOM
7 import 'package:html/dom.dart'; 8 import 'package:html/dom.dart';
8 import 'package:html/src/constants.dart' show isWhitespaceCC; 9 import 'package:html/src/constants.dart' show isWhitespaceCC;
9 10
10 bool matches(Node node, String selector) => 11 bool matches(Node node, String selector) =>
11 new SelectorEvaluator().matches(node, _parseSelectorList(selector)); 12 new SelectorEvaluator().matches(node, _parseSelectorList(selector));
12 13
13 Element querySelector(Node node, String selector) => 14 Element querySelector(Node node, String selector) =>
14 new SelectorEvaluator().querySelector(node, _parseSelectorList(selector)); 15 new SelectorEvaluator().querySelector(node, _parseSelectorList(selector));
15 16
16 List<Element> querySelectorAll(Node node, String selector) { 17 List<Element> querySelectorAll(Node node, String selector) {
17 var results = []; 18 var results = <Element>[];
18 new SelectorEvaluator().querySelectorAll( 19 new SelectorEvaluator().querySelectorAll(
19 node, _parseSelectorList(selector), results); 20 node, _parseSelectorList(selector), results);
20 return results; 21 return results;
21 } 22 }
22 23
23 // http://dev.w3.org/csswg/selectors-4/#grouping 24 // http://dev.w3.org/csswg/selectors-4/#grouping
24 SelectorGroup _parseSelectorList(String selector) { 25 SelectorGroup _parseSelectorList(String selector) {
25 var errors = []; 26 var errors = <Message>[];
26 var group = css.parseSelectorGroup(selector, errors: errors); 27 var group = css.parseSelectorGroup(selector, errors: errors);
27 if (group == null || errors.isNotEmpty) { 28 if (group == null || errors.isNotEmpty) {
28 throw new FormatException("'$selector' is not a valid selector: $errors"); 29 throw new FormatException("'$selector' is not a valid selector: $errors");
29 } 30 }
30 return group; 31 return group;
31 } 32 }
32 33
33 class SelectorEvaluator extends Visitor { 34 class SelectorEvaluator extends Visitor {
34 /// The current HTML element to match against. 35 /// The current HTML element to match against.
35 Element _element; 36 Element _element;
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 return value.startsWith(select); 285 return value.startsWith(select);
285 case TokenKind.SUFFIX_MATCH: 286 case TokenKind.SUFFIX_MATCH:
286 return value.endsWith(select); 287 return value.endsWith(select);
287 case TokenKind.SUBSTRING_MATCH: 288 case TokenKind.SUBSTRING_MATCH:
288 return value.contains(select); 289 return value.contains(select);
289 default: 290 default:
290 throw _unsupported(selector); 291 throw _unsupported(selector);
291 } 292 }
292 } 293 }
293 } 294 }
OLDNEW
« no previous file with comments | « packages/html/lib/src/list_proxy.dart ('k') | packages/html/lib/src/tokenizer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698