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

Unified Diff: dart_style/lib/src/rule/combinator.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dart_style/lib/src/rule/argument.dart ('k') | dart_style/lib/src/rule/rule.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart_style/lib/src/rule/combinator.dart
diff --git a/dart_style/lib/src/rule/combinator.dart b/dart_style/lib/src/rule/combinator.dart
deleted file mode 100644
index 62ddfdb3981f31691e5731a889d706474e495778..0000000000000000000000000000000000000000
--- a/dart_style/lib/src/rule/combinator.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library dart_style.src.rule.combinator;
-
-import '../chunk.dart';
-import 'rule.dart';
-
-/// Handles a list of "combinators".
-///
-/// A combinator is a keyword followed by a list of nodes used to modify some
-/// declaration. It's used for actual hide and show combinators as well as
-/// "with" and "implements" clauses in class declarations.
-///
-/// Combinators can be split in a few different ways:
-///
-/// // All on one line:
-/// import 'animals.dart' show Ant hide Cat;
-///
-/// // Wrap before each keyword:
-/// import 'animals.dart'
-/// show Ant, Baboon
-/// hide Cat;
-///
-/// // Wrap either or both of the name lists:
-/// import 'animals.dart'
-/// show
-/// Ant,
-/// Baboon
-/// hide Cat;
-///
-/// These are not allowed:
-///
-/// // Wrap list but not keyword:
-/// import 'animals.dart' show
-/// Ant,
-/// Baboon
-/// hide Cat;
-///
-/// // Wrap one keyword but not both:
-/// import 'animals.dart'
-/// show Ant, Baboon hide Cat;
-///
-/// This ensures that when any wrapping occurs, the keywords are always at
-/// the beginning of the line.
-class CombinatorRule extends Rule {
- /// The set of chunks before the combinators.
- final Set<Chunk> _combinators = new Set();
-
- /// A list of sets of chunks prior to each name in a combinator.
- ///
- /// The outer list is a list of combinators (i.e. "hide", "show", etc.). Each
- /// inner set is the set of names for that combinator.
- final List<Set<Chunk>> _names = [];
-
- int get numValues {
- var count = 2; // No wrapping, or wrap just before each combinator.
-
- if (_names.length == 2) {
- count += 3; // Wrap first set of names, second, or both.
- } else {
- assert(_names.length == 1);
- count++; // Wrap the names.
- }
-
- return count;
- }
-
- /// Adds a new combinator to the list of combinators.
- ///
- /// This must be called before adding any names.
- void addCombinator(Chunk chunk) {
- _combinators.add(chunk);
- _names.add(new Set());
- }
-
- /// Adds a chunk prior to a name to the current combinator.
- void addName(Chunk chunk) {
- _names.last.add(chunk);
- }
-
- bool isSplit(int value, Chunk chunk) {
- switch (value) {
- case 0:
- // Don't split at all.
- return false;
-
- case 1:
- // Just split at the combinators.
- return _combinators.contains(chunk);
-
- case 2:
- // Split at the combinators and the first set of names.
- return _isCombinatorSplit(0, chunk);
-
- case 3:
- // If there is two combinators, just split at the combinators and the
- // second set of names.
- if (_names.length == 2) {
- // Two sets of combinators, so just split at the combinators and the
- // second set of names.
- return _isCombinatorSplit(1, chunk);
- }
-
- // Split everything.
- return true;
-
- case 4:
- return true;
- }
-
- throw "unreachable";
- }
-
- /// Returns `true` if [chunk] is for a combinator or a name in the
- /// combinator at index [combinator].
- bool _isCombinatorSplit(int combinator, Chunk chunk) {
- return _combinators.contains(chunk) || _names[combinator].contains(chunk);
- }
-
- String toString() => "Comb${super.toString()}";
-}
« no previous file with comments | « dart_style/lib/src/rule/argument.dart ('k') | dart_style/lib/src/rule/rule.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698