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

Side by Side Diff: pkg/yaml/lib/parser.dart

Issue 12282038: Remove deprecated string features. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge to head Created 7 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
« no previous file with comments | « pkg/yaml/lib/model.dart ('k') | runtime/bin/process_patch.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 part of yaml; 5 part of yaml;
6 6
7 /// Translates a string of characters into a YAML serialization tree. 7 /// Translates a string of characters into a YAML serialization tree.
8 /// 8 ///
9 /// This parser is designed to closely follow the spec. All productions in the 9 /// This parser is designed to closely follow the spec. All productions in the
10 /// spec are numbered, and the corresponding methods in the parser have the same 10 /// spec are numbered, and the corresponding methods in the parser have the same
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 _Parser(String s) 165 _Parser(String s)
166 : this.s = s, 166 : this.s = s,
167 len = s.length, 167 len = s.length,
168 contextStack = <String>["document"], 168 contextStack = <String>["document"],
169 errorAnnotations = new _RangeMap(); 169 errorAnnotations = new _RangeMap();
170 170
171 /// Return the character at the current position, then move that position 171 /// Return the character at the current position, then move that position
172 /// forward one character. Also updates the current line and column numbers. 172 /// forward one character. Also updates the current line and column numbers.
173 int next() { 173 int next() {
174 if (pos == len) return -1; 174 if (pos == len) return -1;
175 var char = s.charCodeAt(pos++); 175 var char = s.codeUnitAt(pos++);
176 if (isBreak(char)) { 176 if (isBreak(char)) {
177 line++; 177 line++;
178 column = 0; 178 column = 0;
179 } else { 179 } else {
180 column++; 180 column++;
181 } 181 }
182 182
183 if (farthestLine < line) { 183 if (farthestLine < line) {
184 farthestLine = line; 184 farthestLine = line;
185 farthestColumn = column; 185 farthestColumn = column;
186 farthestContext = contextStack.last; 186 farthestContext = contextStack.last;
187 } else if (farthestLine == line && farthestColumn < column) { 187 } else if (farthestLine == line && farthestColumn < column) {
188 farthestColumn = column; 188 farthestColumn = column;
189 farthestContext = contextStack.last; 189 farthestContext = contextStack.last;
190 } 190 }
191 farthestPos = pos; 191 farthestPos = pos;
192 192
193 return char; 193 return char;
194 } 194 }
195 195
196 /// Returns the character at the current position, or the character [i] 196 /// Returns the code unit at the current position, or the character [i]
197 /// characters after the current position. 197 /// characters after the current position.
198 /// 198 ///
199 /// Returns -1 if this would return a character after the end or before the 199 /// Returns -1 if this would return a character after the end or before the
200 /// beginning of the input string. 200 /// beginning of the input string.
201 int peek([int i = 0]) { 201 int peek([int i = 0]) {
202 var peekPos = pos + i; 202 var peekPos = pos + i;
203 return (peekPos >= len || peekPos < 0) ? -1 : s.charCodeAt(peekPos); 203 return (peekPos >= len || peekPos < 0) ? -1 : s.codeUnitAt(peekPos);
204 } 204 }
205 205
206 /// The truthiness operator. Returns `false` if [obj] is `null` or `false`, 206 /// The truthiness operator. Returns `false` if [obj] is `null` or `false`,
207 /// `true` otherwise. 207 /// `true` otherwise.
208 bool truth(obj) => obj != null && obj != false; 208 bool truth(obj) => obj != null && obj != false;
209 209
210 /// Consumes the current character if it matches [matcher]. Returns the result 210 /// Consumes the current character if it matches [matcher]. Returns the result
211 /// of [matcher]. 211 /// of [matcher].
212 bool consume(bool matcher(int)) { 212 bool consume(bool matcher(int)) {
213 if (matcher(peek())) { 213 if (matcher(peek())) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 for (int i = 0; i < n; i++) { 297 for (int i = 0; i < n; i++) {
298 if (!consume((c) => matcher(c, i))) return false; 298 if (!consume((c) => matcher(c, i))) return false;
299 } 299 }
300 return true; 300 return true;
301 }); 301 });
302 302
303 /// Consumes the exact characters in [str], or nothing. 303 /// Consumes the exact characters in [str], or nothing.
304 /// 304 ///
305 /// Returns whether or not the string was consumed. 305 /// Returns whether or not the string was consumed.
306 bool rawString(String str) => 306 bool rawString(String str) =>
307 nAtOnce(str.length, (c, i) => str.charCodeAt(i) == c); 307 nAtOnce(str.length, (c, i) => str.codeUnitAt(i) == c);
308 308
309 /// Consumes and returns a string of characters matching [matcher], or null if 309 /// Consumes and returns a string of characters matching [matcher], or null if
310 /// there are no such characters. 310 /// there are no such characters.
311 String stringOf(bool matcher(int)) => 311 String stringOf(bool matcher(int)) =>
312 captureString(() => oneOrMore(() => consume(matcher))); 312 captureString(() => oneOrMore(() => consume(matcher)));
313 313
314 /// Calls [consumer] and returns the string that was consumed while doing so, 314 /// Calls [consumer] and returns the string that was consumed while doing so,
315 /// or null if [consumer] returned a falsey value. Automatically wraps 315 /// or null if [consumer] returned a falsey value. Automatically wraps
316 /// [consumer] in `transaction`. 316 /// [consumer] in `transaction`.
317 String captureString(consumer()) { 317 String captureString(consumer()) {
(...skipping 1612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 var pair = contents[i]; 1930 var pair = contents[i];
1931 if (pair.first.contains(pos)) return pair.last; 1931 if (pair.first.contains(pos)) return pair.last;
1932 } 1932 }
1933 return null; 1933 return null;
1934 } 1934 }
1935 1935
1936 /// Associates [value] with [range]. 1936 /// Associates [value] with [range].
1937 operator[]=(_Range range, E value) => 1937 operator[]=(_Range range, E value) =>
1938 contents.add(new _Pair<_Range, E>(range, value)); 1938 contents.add(new _Pair<_Range, E>(range, value));
1939 } 1939 }
OLDNEW
« no previous file with comments | « pkg/yaml/lib/model.dart ('k') | runtime/bin/process_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698