OLD | NEW |
---|---|
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 js_ast; | 5 part of js_ast; |
6 | 6 |
7 | 7 |
8 class JavaScriptPrintingOptions { | 8 class JavaScriptPrintingOptions { |
9 final bool shouldCompressOutput; | 9 final bool shouldCompressOutput; |
10 final bool minifyLocalVariables; | 10 final bool minifyLocalVariables; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
174 if (shouldCompressOutput) { | 174 if (shouldCompressOutput) { |
175 pendingSemicolon = true; | 175 pendingSemicolon = true; |
176 } else { | 176 } else { |
177 out(";"); | 177 out(";"); |
178 forceLine(); | 178 forceLine(); |
179 } | 179 } |
180 } | 180 } |
181 | 181 |
182 void outIndent(String str) { indent(); out(str); } | 182 void outIndent(String str) { indent(); out(str); } |
183 void outIndentLn(String str) { indent(); outLn(str); } | 183 void outIndentLn(String str) { indent(); outLn(str); } |
184 | |
185 bool _skipNextIndent = false; | |
Jennifer Messerly
2015/12/15 23:57:10
style nit: it looks like they're keeping all field
ochafik
2015/12/16 02:00:37
Done.
| |
186 void skipNextIndent() { | |
187 _skipNextIndent = true; | |
188 } | |
184 void indent() { | 189 void indent() { |
190 if (_skipNextIndent) { | |
191 _skipNextIndent = false; | |
192 return; | |
193 } | |
185 if (!shouldCompressOutput) { | 194 if (!shouldCompressOutput) { |
186 out(indentation); | 195 out(indentation); |
187 } | 196 } |
188 } | 197 } |
189 | 198 |
190 visit(Node node) { | 199 visit(Node node) { |
191 context.enterNode(node); | 200 context.enterNode(node); |
192 node.accept(this); | 201 node.accept(this); |
193 context.exitNode(node); | 202 context.exitNode(node); |
194 } | 203 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
292 then = new Block(<Statement>[then]); | 301 then = new Block(<Statement>[then]); |
293 } | 302 } |
294 } | 303 } |
295 if (shouldIndent) indent(); | 304 if (shouldIndent) indent(); |
296 out("if"); | 305 out("if"); |
297 spaceOut(); | 306 spaceOut(); |
298 out("("); | 307 out("("); |
299 visitNestedExpression(node.condition, EXPRESSION, | 308 visitNestedExpression(node.condition, EXPRESSION, |
300 newInForInit: false, newAtStatementBegin: false); | 309 newInForInit: false, newAtStatementBegin: false); |
301 out(")"); | 310 out(")"); |
302 bool thenWasBlock = | 311 bool thenWasBlock; |
Jennifer Messerly
2015/12/15 23:57:10
nice readability improvement.
Would it be possibl
ochafik
2015/12/16 02:00:37
Done (didn't realize the contamination potential :
| |
303 blockBody(then, needsSeparation: false, needsNewline: !hasElse); | 312 if (!hasElse && then is! Block) { |
313 thenWasBlock = false; | |
314 if (!shouldCompressOutput) spaceOut(); | |
Jennifer Messerly
2015/12/15 23:57:10
spaceOut() already does the shouldCompressOutput,
ochafik
2015/12/16 02:00:37
D'oh!
| |
315 skipNextIndent(); | |
316 visit(then); | |
317 } else { | |
318 thenWasBlock = blockBody(then, needsSeparation: false, needsNewline: !hasE lse); | |
Jennifer Messerly
2015/12/15 23:57:10
long line
ochafik
2015/12/16 02:00:37
Done.
| |
319 } | |
304 if (hasElse) { | 320 if (hasElse) { |
305 if (thenWasBlock) { | 321 if (thenWasBlock) { |
306 spaceOut(); | 322 spaceOut(); |
307 } else { | 323 } else { |
308 indent(); | 324 indent(); |
309 } | 325 } |
310 out("else"); | 326 out("else"); |
311 if (elsePart is If) { | 327 if (elsePart is If) { |
312 pendingSpace = true; | 328 pendingSpace = true; |
313 ifOut(elsePart, false); | 329 ifOut(elsePart, false); |
(...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1608 declare(node.name); | 1624 declare(node.name); |
1609 node.function.accept(this); | 1625 node.function.accept(this); |
1610 } | 1626 } |
1611 | 1627 |
1612 visitClassExpression(ClassExpression node) { | 1628 visitClassExpression(ClassExpression node) { |
1613 declare(node.name); | 1629 declare(node.name); |
1614 if (node.heritage != null) node.heritage.accept(this); | 1630 if (node.heritage != null) node.heritage.accept(this); |
1615 for (Method element in node.methods) element.accept(this); | 1631 for (Method element in node.methods) element.accept(this); |
1616 } | 1632 } |
1617 } | 1633 } |
OLD | NEW |