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

Side by Side Diff: packages/csslib/lib/src/analyzer.dart

Issue 3015713002: Roll to pickup pool changes
Patch Set: Created 3 years, 2 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/csslib/lib/parser.dart ('k') | packages/csslib/lib/src/css_printer.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 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of csslib.parser; 5 part of csslib.parser;
6 6
7 // TODO(terry): Add optimizing phase to remove duplicated selectors in the same 7 // TODO(terry): Add optimizing phase to remove duplicated selectors in the same
8 // selector group (e.g., .btn, .btn { color: red; }). Also, look 8 // selector group (e.g., .btn, .btn { color: red; }). Also, look
9 // at simplifying selectors expressions too (much harder). 9 // at simplifying selectors expressions too (much harder).
10 // TODO(terry): Detect invalid directive usage. All @imports must occur before 10 // TODO(terry): Detect invalid directive usage. All @imports must occur before
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 215
216 // Remove nested rules; they're all flatten and in the _expandedRuleSets. 216 // Remove nested rules; they're all flatten and in the _expandedRuleSets.
217 node.declarationGroup.declarations 217 node.declarationGroup.declarations
218 .removeWhere((declaration) => declaration is RuleSet); 218 .removeWhere((declaration) => declaration is RuleSet);
219 219
220 _nestedSelectorGroup = oldNestedSelectorGroups; 220 _nestedSelectorGroup = oldNestedSelectorGroups;
221 221
222 // If any expandedRuleSets and we're back at the top-level rule set then 222 // If any expandedRuleSets and we're back at the top-level rule set then
223 // there were nested rule set(s). 223 // there were nested rule set(s).
224 if (_parentRuleSet == null) { 224 if (_parentRuleSet == null) {
225 if (!_expandedRuleSets.isEmpty) { 225 if (_expandedRuleSets.isNotEmpty) {
226 // Remember ruleset to replace with these flattened rulesets. 226 // Remember ruleset to replace with these flattened rulesets.
227 _expansions[node] = _expandedRuleSets; 227 _expansions[node] = _expandedRuleSets;
228 _expandedRuleSets = []; 228 _expandedRuleSets = [];
229 } 229 }
230 assert(_flatDeclarationGroup == null); 230 assert(_flatDeclarationGroup == null);
231 assert(_nestedSelectorGroup == null); 231 assert(_nestedSelectorGroup == null);
232 } 232 }
233 } 233 }
234 234
235 /** 235 /**
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 if (!hasThis) { 271 if (!hasThis) {
272 // If no & in the sector group then prefix with the parent selector. 272 // If no & in the sector group then prefix with the parent selector.
273 newSequence.addAll(parent); 273 newSequence.addAll(parent);
274 newSequence.addAll(_convertToDescendentSequence(current)); 274 newSequence.addAll(_convertToDescendentSequence(current));
275 } else { 275 } else {
276 for (var sequence in current) { 276 for (var sequence in current) {
277 if (sequence.simpleSelector.isThis) { 277 if (sequence.simpleSelector.isThis) {
278 // Substitue the & with the parent selector and only use a combinator 278 // Substitue the & with the parent selector and only use a combinator
279 // descendant if & is prefix by a sequence with an empty name e.g., 279 // descendant if & is prefix by a sequence with an empty name e.g.,
280 // "... + &", "&", "... ~ &", etc. 280 // "... + &", "&", "... ~ &", etc.
281 var hasPrefix = !newSequence.isEmpty && 281 var hasPrefix = newSequence.isNotEmpty &&
282 !newSequence.last.simpleSelector.name.isEmpty; 282 newSequence.last.simpleSelector.name.isNotEmpty;
283 newSequence.addAll( 283 newSequence.addAll(
284 hasPrefix ? _convertToDescendentSequence(parent) : parent); 284 hasPrefix ? _convertToDescendentSequence(parent) : parent);
285 } else { 285 } else {
286 newSequence.add(sequence); 286 newSequence.add(sequence);
287 } 287 }
288 } 288 }
289 } 289 }
290 290
291 return newSequence; 291 return newSequence;
292 } 292 }
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 } 899 }
900 } 900 }
901 901
902 /** Find all @extend to create inheritance. */ 902 /** Find all @extend to create inheritance. */
903 class AllExtends extends Visitor { 903 class AllExtends extends Visitor {
904 final Map<String, List<SelectorGroup>> inherits = 904 final Map<String, List<SelectorGroup>> inherits =
905 new Map<String, List<SelectorGroup>>(); 905 new Map<String, List<SelectorGroup>>();
906 906
907 SelectorGroup _currSelectorGroup; 907 SelectorGroup _currSelectorGroup;
908 int _currDeclIndex; 908 int _currDeclIndex;
909 List<int> _extendsToRemove = []; 909 final List<int> _extendsToRemove = [];
910 910
911 void visitRuleSet(RuleSet node) { 911 void visitRuleSet(RuleSet node) {
912 var oldSelectorGroup = _currSelectorGroup; 912 var oldSelectorGroup = _currSelectorGroup;
913 _currSelectorGroup = node.selectorGroup; 913 _currSelectorGroup = node.selectorGroup;
914 914
915 super.visitRuleSet(node); 915 super.visitRuleSet(node);
916 916
917 _currSelectorGroup = oldSelectorGroup; 917 _currSelectorGroup = oldSelectorGroup;
918 } 918 }
919 919
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 isLastNone = false; 1004 isLastNone = false;
1005 } 1005 }
1006 } else { 1006 } else {
1007 isLastNone = simpleSeq.isCombinatorNone; 1007 isLastNone = simpleSeq.isCombinatorNone;
1008 } 1008 }
1009 } 1009 }
1010 } 1010 }
1011 super.visitSelectorGroup(node); 1011 super.visitSelectorGroup(node);
1012 } 1012 }
1013 } 1013 }
OLDNEW
« no previous file with comments | « packages/csslib/lib/parser.dart ('k') | packages/csslib/lib/src/css_printer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698