OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 class TemplateManager { | 7 class TemplateManager { |
8 Map<String, Template> expressionTemplates = new Map<String, Template>(); | 8 Map<String, Template> expressionTemplates = new Map<String, Template>(); |
9 Map<String, Template> statementTemplates = new Map<String, Template>(); | 9 Map<String, Template> statementTemplates = new Map<String, Template>(); |
10 | 10 |
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 Instantiator makeValue = visit(node.value); | 732 Instantiator makeValue = visit(node.value); |
733 return (arguments) { | 733 return (arguments) { |
734 return new Property(makeName(arguments), makeValue(arguments)); | 734 return new Property(makeName(arguments), makeValue(arguments)); |
735 }; | 735 }; |
736 } | 736 } |
737 | 737 |
738 Instantiator visitRegExpLiteral(RegExpLiteral node) => | 738 Instantiator visitRegExpLiteral(RegExpLiteral node) => |
739 (arguments) => new RegExpLiteral(node.pattern); | 739 (arguments) => new RegExpLiteral(node.pattern); |
740 | 740 |
741 Instantiator visitTemplateString(TemplateString node) { | 741 Instantiator visitTemplateString(TemplateString node) { |
742 Iterable makeElements = | 742 Iterable<Instantiator> makeElements = node.interpolations.map(visit); |
743 node.elements.map((e) => e is String ? e : visit(e)); | 743 return (arguments) => new TemplateString(node.strings, |
744 return (arguments) { | 744 makeElements.map((m) => m(arguments)).toList(growable: false)); |
745 return new TemplateString(makeElements | |
746 .map((m) => m is String ? m : m(arguments)) | |
747 .toList(growable: false)); | |
748 }; | |
749 } | 745 } |
750 | 746 |
751 Instantiator visitTaggedTemplate(TaggedTemplate node) { | 747 Instantiator visitTaggedTemplate(TaggedTemplate node) { |
752 Instantiator makeTag = visit(node.tag); | 748 Instantiator makeTag = visit(node.tag); |
753 Instantiator makeTemplate = visit(node.template); | 749 Instantiator makeTemplate = visit(node.template); |
754 return (arguments) { | 750 return (arguments) { |
755 return new TaggedTemplate(makeTag(arguments), makeTemplate(arguments)); | 751 return new TaggedTemplate(makeTag(arguments), makeTemplate(arguments)); |
756 }; | 752 }; |
757 } | 753 } |
758 | 754 |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 if (count != before) containsInterpolatedNode.add(node); | 909 if (count != before) containsInterpolatedNode.add(node); |
914 return null; | 910 return null; |
915 } | 911 } |
916 | 912 |
917 visitInterpolatedNode(InterpolatedNode node) { | 913 visitInterpolatedNode(InterpolatedNode node) { |
918 containsInterpolatedNode.add(node); | 914 containsInterpolatedNode.add(node); |
919 if (node.isNamed) holeNames.add(node.nameOrPosition); | 915 if (node.isNamed) holeNames.add(node.nameOrPosition); |
920 ++count; | 916 ++count; |
921 } | 917 } |
922 } | 918 } |
OLD | NEW |