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

Side by Side Diff: pkg/compiler/lib/src/tree/dartstring.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « pkg/compiler/lib/src/tracer.dart ('k') | pkg/compiler/lib/src/tree/nodes.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import 'dart:collection'; 5 import 'dart:collection';
6 import '../util/characters.dart'; 6 import '../util/characters.dart';
7 7
8 /** 8 /**
9 * The [DartString] type represents a Dart string value as a sequence of Unicode 9 * The [DartString] type represents a Dart string value as a sequence of Unicode
10 * Scalar Values. 10 * Scalar Values.
(...skipping 25 matching lines...) Expand all
36 bool get isEmpty => length == 0; 36 bool get isEmpty => length == 0;
37 37
38 Iterator<int> get iterator; 38 Iterator<int> get iterator;
39 39
40 /** 40 /**
41 * The string represented by this [DartString]. 41 * The string represented by this [DartString].
42 */ 42 */
43 String slowToString(); 43 String slowToString();
44 44
45 bool operator ==(var other) { 45 bool operator ==(var other) {
46 if (other is !DartString) return false; 46 if (other is! DartString) return false;
47 DartString otherString = other; 47 DartString otherString = other;
48 if (length != otherString.length) return false; 48 if (length != otherString.length) return false;
49 Iterator it1 = iterator; 49 Iterator it1 = iterator;
50 Iterator it2 = otherString.iterator; 50 Iterator it2 = otherString.iterator;
51 while (it1.moveNext()) { 51 while (it1.moveNext()) {
52 if (!it2.moveNext()) return false; 52 if (!it2.moveNext()) return false;
53 if (it1.current != it2.current) return false; 53 if (it1.current != it2.current) return false;
54 } 54 }
55 return true; 55 return true;
56 } 56 }
57 57
58 int get hashCode => throw new UnsupportedError('DartString.hashCode'); 58 int get hashCode => throw new UnsupportedError('DartString.hashCode');
59 59
60 /** 60 /**
61 * A textual representation of this [DartString] with some debugging 61 * A textual representation of this [DartString] with some debugging
62 * information. 62 * information.
63 */ 63 */
64 String toString() => "DartString#${length}:${slowToString()}"; 64 String toString() => "DartString#${length}:${slowToString()}";
65 } 65 }
66 66
67
68 /** 67 /**
69 * A [DartString] where the content is represented by an actual [String]. 68 * A [DartString] where the content is represented by an actual [String].
70 */ 69 */
71 class LiteralDartString extends DartString { 70 class LiteralDartString extends DartString {
72 final String string; 71 final String string;
73 const LiteralDartString(this.string); 72 const LiteralDartString(this.string);
74 int get length => string.length; 73 int get length => string.length;
75 Iterator<int> get iterator => string.codeUnits.iterator; 74 Iterator<int> get iterator => string.codeUnits.iterator;
76 String slowToString() => string; 75 String slowToString() => string;
77 } 76 }
(...skipping 27 matching lines...) Expand all
105 * General case of a [SourceBasedDartString] where the source might contain 104 * General case of a [SourceBasedDartString] where the source might contain
106 * escapes. 105 * escapes.
107 */ 106 */
108 class EscapedSourceDartString extends SourceBasedDartString { 107 class EscapedSourceDartString extends SourceBasedDartString {
109 String toStringCache; 108 String toStringCache;
110 EscapedSourceDartString(source, length) : super(source, length); 109 EscapedSourceDartString(source, length) : super(source, length);
111 Iterator<int> get iterator { 110 Iterator<int> get iterator {
112 if (toStringCache != null) return toStringCache.codeUnits.iterator; 111 if (toStringCache != null) return toStringCache.codeUnits.iterator;
113 return new StringEscapeIterator(source); 112 return new StringEscapeIterator(source);
114 } 113 }
114
115 String slowToString() { 115 String slowToString() {
116 if (toStringCache != null) return toStringCache; 116 if (toStringCache != null) return toStringCache;
117 StringBuffer buffer = new StringBuffer(); 117 StringBuffer buffer = new StringBuffer();
118 StringEscapeIterator it = new StringEscapeIterator(source); 118 StringEscapeIterator it = new StringEscapeIterator(source);
119 while (it.moveNext()) { 119 while (it.moveNext()) {
120 buffer.writeCharCode(it.current); 120 buffer.writeCharCode(it.current);
121 } 121 }
122 toStringCache = buffer.toString(); 122 toStringCache = buffer.toString();
123 return toStringCache; 123 return toStringCache;
124 } 124 }
(...skipping 12 matching lines...) Expand all
137 this.right = right, 137 this.right = right,
138 length = left.length + right.length; 138 length = left.length + right.length;
139 139
140 Iterator<int> get iterator => new ConsDartStringIterator(this); 140 Iterator<int> get iterator => new ConsDartStringIterator(this);
141 141
142 String slowToString() { 142 String slowToString() {
143 if (toStringCache != null) return toStringCache; 143 if (toStringCache != null) return toStringCache;
144 toStringCache = left.slowToString() + right.slowToString(); 144 toStringCache = left.slowToString() + right.slowToString();
145 return toStringCache; 145 return toStringCache;
146 } 146 }
147
147 String get source => slowToString(); 148 String get source => slowToString();
148 } 149 }
149 150
150 class ConsDartStringIterator implements Iterator<int> { 151 class ConsDartStringIterator implements Iterator<int> {
151 HasNextIterator<int> currentIterator; 152 HasNextIterator<int> currentIterator;
152 DartString right; 153 DartString right;
153 bool hasNextLookAhead; 154 bool hasNextLookAhead;
154 int _current = null; 155 int _current = null;
155 156
156 ConsDartStringIterator(ConsDartString cons) 157 ConsDartStringIterator(ConsDartString cons)
(...skipping 12 matching lines...) Expand all
169 _current = null; 170 _current = null;
170 return false; 171 return false;
171 } 172 }
172 _current = currentIterator.next(); 173 _current = currentIterator.next();
173 hasNextLookAhead = currentIterator.hasNext; 174 hasNextLookAhead = currentIterator.hasNext;
174 if (!hasNextLookAhead) { 175 if (!hasNextLookAhead) {
175 nextPart(); 176 nextPart();
176 } 177 }
177 return true; 178 return true;
178 } 179 }
180
179 void nextPart() { 181 void nextPart() {
180 if (right != null) { 182 if (right != null) {
181 currentIterator = new HasNextIterator<int>(right.iterator); 183 currentIterator = new HasNextIterator<int>(right.iterator);
182 right = null; 184 right = null;
183 hasNextLookAhead = currentIterator.hasNext; 185 hasNextLookAhead = currentIterator.hasNext;
184 } 186 }
185 } 187 }
186 } 188 }
187 189
188 /** 190 /**
189 *Iterator that returns the actual string contents of a string with escapes. 191 *Iterator that returns the actual string contents of a string with escapes.
190 */ 192 */
191 class StringEscapeIterator implements Iterator<int>{ 193 class StringEscapeIterator implements Iterator<int> {
192 final Iterator<int> source; 194 final Iterator<int> source;
193 int _current = null; 195 int _current = null;
194 196
195 StringEscapeIterator(String source) : this.source = source.codeUnits.iterator; 197 StringEscapeIterator(String source) : this.source = source.codeUnits.iterator;
196 198
197 int get current => _current; 199 int get current => _current;
198 200
199 bool moveNext() { 201 bool moveNext() {
200 if (!source.moveNext()) { 202 if (!source.moveNext()) {
201 _current = null; 203 _current = null;
202 return false; 204 return false;
203 } 205 }
204 int code = source.current; 206 int code = source.current;
205 if (code != $BACKSLASH) { 207 if (code != $BACKSLASH) {
206 _current = code; 208 _current = code;
207 return true; 209 return true;
208 } 210 }
209 source.moveNext(); 211 source.moveNext();
210 code = source.current; 212 code = source.current;
211 switch (code) { 213 switch (code) {
212 case $n: _current = $LF; break; 214 case $n:
213 case $r: _current = $CR; break; 215 _current = $LF;
214 case $t: _current = $TAB; break; 216 break;
215 case $b: _current = $BS; break; 217 case $r:
216 case $f: _current = $FF; break; 218 _current = $CR;
217 case $v: _current = $VTAB; break; 219 break;
220 case $t:
221 _current = $TAB;
222 break;
223 case $b:
224 _current = $BS;
225 break;
226 case $f:
227 _current = $FF;
228 break;
229 case $v:
230 _current = $VTAB;
231 break;
218 case $x: 232 case $x:
219 source.moveNext(); 233 source.moveNext();
220 int value = hexDigitValue(source.current); 234 int value = hexDigitValue(source.current);
221 source.moveNext(); 235 source.moveNext();
222 value = value * 16 + hexDigitValue(source.current); 236 value = value * 16 + hexDigitValue(source.current);
223 _current = value; 237 _current = value;
224 break; 238 break;
225 case $u: 239 case $u:
226 int value = 0; 240 int value = 0;
227 source.moveNext(); 241 source.moveNext();
(...skipping 14 matching lines...) Expand all
242 value = value * 16 + hexDigitValue(source.current); 256 value = value * 16 + hexDigitValue(source.current);
243 } 257 }
244 _current = value; 258 _current = value;
245 break; 259 break;
246 default: 260 default:
247 _current = code; 261 _current = code;
248 } 262 }
249 return true; 263 return true;
250 } 264 }
251 } 265 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tracer.dart ('k') | pkg/compiler/lib/src/tree/nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698