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 int nextInteger() { | 129 int nextInteger() { |
129 var validDigits = '0123456789'; | 130 // Doing this with a regular expression is slightly slower on the VM, |
131 // but makes a moderate difference in Javascript right now. | |
Emily Fortuna
2012/08/18 00:46:30
perhaps we could do something a little fancier lik
| |
130 var digits = []; | 132 var digits = []; |
131 while (!atEnd() && (validDigits.contains(peek()))) { | 133 while (!atEnd() && (digitMatcher.hasMatch(peek()))) { |
132 digits.add(next().charCodeAt(0)); | 134 digits.add(next().charCodeAt(0)); |
133 } | 135 } |
134 return Math.parseInt(new String.fromCharCodes(digits)); | 136 return Math.parseInt(new String.fromCharCodes(digits)); |
135 } | 137 } |
136 } | 138 } |
OLD | NEW |