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

Side by Side Diff: third_party/pkg/angular/lib/tools/parser_generator/source.dart

Issue 148453003: Updating Angular version (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 library dart_code_gen_source;
2
3 import 'dart_code_gen.dart';
4
5 class SourceBuilder {
6 static RegExp NON_WORDS = new RegExp(r'\W');
7
8 Map<String, Code> refs = {};
9 List<Code> codeRefs = [];
10
11 String str(String s) => '\'' +
12 s.replaceAll('\'', '\\\'')
13 .replaceAll('\n', '\\n')
14 .replaceAll(r'$', r'\$') + '\'';
15 String ident(String s) => '_${s.replaceAll(NON_WORDS, '_')}_${s.hashCode}';
16
17 String ref(Code code) {
18 if (!refs.containsKey(code.id)) {
19 refs[code.id] = code;
20 code.toSource(this); // recursively expand;
21 codeRefs.add(code);
22 }
23 return this.ident(code.id);
24 }
25
26 parens([p1, p2, p3, p4, p5, p6]) => new ParenthesisSource()..call(p1, p2, p3, p4, p5, p6);
27 body([p1, p2, p3, p4, p5, p6]) => new BodySource()..call(p1, p2, p3, p4, p5, p 6);
28 stmt([p1, p2, p3, p4, p5, p6]) => new StatementSource()..call(p1, p2, p3, p4, p5, p6);
29
30 call([p1, p2, p3, p4, p5, p6]) => new Source()..call(p1, p2, p3, p4, p5, p6);
31
32 }
33
34 class Source {
35 static String NEW_LINE = '\n';
36 List source = [];
37
38 call([p1, p2, p3, p4, p5, p6]) {
39 if (p1 != null) source.add(p1);
40 if (p2 != null) source.add(p2);
41 if (p3 != null) source.add(p3);
42 if (p4 != null) source.add(p4);
43 if (p5 != null) source.add(p5);
44 if (p6 != null) source.add(p6);
45 }
46
47 toString([String indent='', newLine=false, sep='']) {
48 var lines = [];
49 var trailing = sep == ';';
50 var _sep = '';
51 source.forEach((s) {
52 if (!trailing) lines.add(_sep);
53 if (newLine) lines.add('\n' + indent);
54 if (s is Source) {
55 lines.add(s.toString(indent));
56 } else {
57 lines.add(s);
58 }
59 _sep = sep;
60 if (trailing) lines.add(_sep);
61 });
62 return lines.join('');
63 }
64 }
65
66
67 class ParenthesisSource extends Source {
68 toString([String indent='', newLine=false, sep='']) {
69 return '(' + super.toString(indent + ' ', true, ',') + ')';
70 }
71 }
72
73 class MapSource extends Source {
74 toString([String indent='', newLine=false, sep='']) {
75 return '{' + super.toString(indent + ' ', true, ',') + '}';
76 }
77 }
78
79 class BodySource extends Source {
80 BodySource() {
81 //this('');
82 }
83 toString([String indent='', newLine=false, sep='']) {
84 return '{${super.toString(indent + ' ', true)}\n$indent}';
85 }
86 }
87
88 class StatementSource extends Source {
89 toString([String indent='', newLine=false, sep='']) {
90 return '${super.toString(indent + ' ')};';
91 }
92 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698