OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |