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

Side by Side Diff: lib/src/line_splitting/line_splitter.dart

Issue 1418483008: Optimize splitting lines with many rules. (Closed) Base URL: https://github.com/dart-lang/dart_style.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library dart_style.src.line_splitting.line_splitter; 5 library dart_style.src.line_splitting.line_splitter;
6 6
7 import '../chunk.dart'; 7 import '../chunk.dart';
8 import '../debug.dart' as debug; 8 import '../debug.dart' as debug;
9 import '../line_writer.dart'; 9 import '../line_writer.dart';
10 import '../rule/rule.dart'; 10 import '../rule/rule.dart';
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 .toList(growable: false), 138 .toList(growable: false),
139 blockIndentation = blockIndentation, 139 blockIndentation = blockIndentation,
140 firstLineIndent = flushLeft ? 0 : firstLineIndent + blockIndentation { 140 firstLineIndent = flushLeft ? 0 : firstLineIndent + blockIndentation {
141 _queue.bindSplitter(this); 141 _queue.bindSplitter(this);
142 142
143 // Store the rule's index in the rule so we can get from a chunk to a rule 143 // Store the rule's index in the rule so we can get from a chunk to a rule
144 // index quickly. 144 // index quickly.
145 for (var i = 0; i < rules.length; i++) { 145 for (var i = 0; i < rules.length; i++) {
146 rules[i].index = i; 146 rules[i].index = i;
147 } 147 }
148
149 // Now that every used rule has an index, tell the rules to discard any
150 // constraints on unindexed rules.
151 for (var rule in rules) {
152 rule.forgetUnusedRules();
153 }
148 } 154 }
149 155
150 /// Determine the best way to split the chunks into lines that fit in the 156 /// Determine the best way to split the chunks into lines that fit in the
151 /// page, if possible. 157 /// page, if possible.
152 /// 158 ///
153 /// Returns a [SplitSet] that defines where each split occurs and the 159 /// Returns a [SplitSet] that defines where each split occurs and the
154 /// indentation of each line. 160 /// indentation of each line.
155 /// 161 ///
156 /// [firstLineIndent] is the number of characters of whitespace to prefix the 162 /// [firstLineIndent] is the number of characters of whitespace to prefix the
157 /// first line of output with. 163 /// first line of output with.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 debug.log(); 196 debug.log();
191 } 197 }
192 198
193 return _bestSolution.splits; 199 return _bestSolution.splits;
194 } 200 }
195 201
196 void enqueue(SolveState state) { 202 void enqueue(SolveState state) {
197 _queue.add(state); 203 _queue.add(state);
198 } 204 }
199 } 205 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698