OLD | NEW |
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 /** | 5 /** |
6 * A class for holding onto the data for a date so that it can be built | 6 * A class for holding onto the data for a date so that it can be built |
7 * up incrementally. | 7 * up incrementally. |
8 */ | 8 */ |
9 class _DateBuilder { | 9 class _DateBuilder { |
10 int year = 0, | 10 int year = 0, |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 while (!atEnd()) { | 118 while (!atEnd()) { |
119 if (f(next())) results.add(index - 1); | 119 if (f(next())) results.add(index - 1); |
120 } | 120 } |
121 return results; | 121 return results; |
122 } | 122 } |
123 | 123 |
124 /** | 124 /** |
125 * Assuming that the contents are characters, read as many digits as we | 125 * Assuming that the contents are characters, read as many digits as we |
126 * can see and then return the corresponding integer. Advance the stream. | 126 * can see and then return the corresponding integer. Advance the stream. |
127 */ | 127 */ |
128 var digitMatcher = const RegExp(@'\d'); | 128 var digitMatcher = const RegExp(@'\d+'); |
129 int nextInteger() { | 129 int nextInteger() { |
130 // Doing this with a regular expression is slightly slower on the VM, | 130 var string = digitMatcher.stringMatch(rest()); |
131 // but makes a moderate difference in Javascript right now. | 131 if (string == null || string.isEmpty()) return null; |
132 var digits = []; | 132 read(string.length); |
133 while (!atEnd() && (digitMatcher.hasMatch(peek()))) { | 133 return Math.parseInt(string); |
134 digits.add(next().charCodeAt(0)); | |
135 } | |
136 return Math.parseInt(new String.fromCharCodes(digits)); | |
137 } | 134 } |
138 } | 135 } |
OLD | NEW |