OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // Utilities for building JS ASTs at runtime. Contains a builder class | 5 // Utilities for building JS ASTs at runtime. Contains a builder class |
6 // and a parser that parses part of the language. | 6 // and a parser that parses part of the language. |
7 | 7 |
8 part of js_ast; | 8 part of js_ast; |
9 | 9 |
10 | 10 |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 } else { | 345 } else { |
346 _parts = new List.from(parts, growable: false); | 346 _parts = new List.from(parts, growable: false); |
347 } | 347 } |
348 return new StringConcatenation(_parts); | 348 return new StringConcatenation(_parts); |
349 } | 349 } |
350 | 350 |
351 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { | 351 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { |
352 return new _InterleaveIterable(list, separator); | 352 return new _InterleaveIterable(list, separator); |
353 } | 353 } |
354 | 354 |
| 355 LiteralString quoteName(Name name, {allowNull: false}) { |
| 356 if (name == null) { |
| 357 assert(allowNull); |
| 358 return new LiteralString('""'); |
| 359 } |
| 360 return new LiteralStringFromName(name); |
| 361 } |
| 362 |
355 LiteralNumber number(num value) => new LiteralNumber('$value'); | 363 LiteralNumber number(num value) => new LiteralNumber('$value'); |
356 | 364 |
357 LiteralBool boolean(bool value) => new LiteralBool(value); | 365 LiteralBool boolean(bool value) => new LiteralBool(value); |
358 | 366 |
359 ArrayInitializer numArray(Iterable<int> list) => | 367 ArrayInitializer numArray(Iterable<int> list) => |
360 new ArrayInitializer(list.map(number).toList()); | 368 new ArrayInitializer(list.map(number).toList()); |
361 | 369 |
362 ArrayInitializer stringArray(Iterable<String> list) => | 370 ArrayInitializer stringArray(Iterable<String> list) => |
363 new ArrayInitializer(list.map(string).toList()); | 371 new ArrayInitializer(list.map(string).toList()); |
364 | 372 |
365 Comment comment(String text) => new Comment(text); | 373 Comment comment(String text) => new Comment(text); |
366 | 374 |
367 Call propertyCall(Expression receiver, | 375 Call propertyCall(Expression receiver, |
368 String fieldName, | 376 Expression fieldName, |
369 List<Expression> arguments) { | 377 List<Expression> arguments) { |
370 return new Call(new PropertyAccess.field(receiver, fieldName), arguments); | 378 return new Call(new PropertyAccess(receiver, fieldName), arguments); |
371 } | 379 } |
372 } | 380 } |
373 | 381 |
374 LiteralString string(String value) => js.string(value); | 382 LiteralString string(String value) => js.string(value); |
| 383 LiteralString quoteName(Name name, {allowNull: false}) { |
| 384 return js.quoteName(name, allowNull: allowNull); |
| 385 } |
375 LiteralString stringPart(String value) => js.stringPart(value); | 386 LiteralString stringPart(String value) => js.stringPart(value); |
376 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { | 387 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { |
377 return js.joinLiterals(list, separator); | 388 return js.joinLiterals(list, separator); |
378 } | 389 } |
| 390 StringConcatenation concatenateStrings(Iterable<Literal> parts, |
| 391 {addQuotes: false}) { |
| 392 return js.concatenateStrings(parts, addQuotes: addQuotes); |
| 393 } |
| 394 |
379 LiteralNumber number(num value) => js.number(value); | 395 LiteralNumber number(num value) => js.number(value); |
380 ArrayInitializer numArray(Iterable<int> list) => js.numArray(list); | 396 ArrayInitializer numArray(Iterable<int> list) => js.numArray(list); |
381 ArrayInitializer stringArray(Iterable<String> list) => js.stringArray(list); | 397 ArrayInitializer stringArray(Iterable<String> list) => js.stringArray(list); |
382 Call propertyCall(Expression receiver, | 398 Call propertyCall(Expression receiver, |
383 String fieldName, | 399 Expression fieldName, |
384 List<Expression> arguments) { | 400 List<Expression> arguments) { |
385 return js.propertyCall(receiver, fieldName, arguments); | 401 return js.propertyCall(receiver, fieldName, arguments); |
386 } | 402 } |
387 | 403 |
388 class MiniJsParserError { | 404 class MiniJsParserError { |
389 MiniJsParserError(this.parser, this.message) { } | 405 MiniJsParserError(this.parser, this.message) { } |
390 | 406 |
391 final MiniJsParser parser; | 407 final MiniJsParser parser; |
392 final String message; | 408 final String message; |
393 | 409 |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1403 class _InterleaveIterable extends IterableBase { | 1419 class _InterleaveIterable extends IterableBase { |
1404 Iterable<Node> source; | 1420 Iterable<Node> source; |
1405 Node separator; | 1421 Node separator; |
1406 | 1422 |
1407 _InterleaveIterable(this.source, this.separator); | 1423 _InterleaveIterable(this.source, this.separator); |
1408 | 1424 |
1409 Iterator<Node> get iterator { | 1425 Iterator<Node> get iterator { |
1410 return new _InterleaveIterator(source.iterator, separator); | 1426 return new _InterleaveIterator(source.iterator, separator); |
1411 } | 1427 } |
1412 } | 1428 } |
OLD | NEW |