| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_DATEPARSER_INL_H_ | 5 #ifndef V8_DATEPARSER_INL_H_ |
| 6 #define V8_DATEPARSER_INL_H_ | 6 #define V8_DATEPARSER_INL_H_ |
| 7 | 7 |
| 8 #include "src/char-predicates-inl.h" | 8 #include "src/char-predicates-inl.h" |
| 9 #include "src/dateparser.h" | 9 #include "src/dateparser.h" |
| 10 #include "src/unicode-cache-inl.h" |
| 10 | 11 |
| 11 namespace v8 { | 12 namespace v8 { |
| 12 namespace internal { | 13 namespace internal { |
| 13 | 14 |
| 14 template <typename Char> | 15 template <typename Char> |
| 15 bool DateParser::Parse(Vector<Char> str, | 16 bool DateParser::Parse(Vector<Char> str, |
| 16 FixedArray* out, | 17 FixedArray* out, |
| 17 UnicodeCache* unicode_cache) { | 18 UnicodeCache* unicode_cache) { |
| 18 DCHECK(out->length() >= OUTPUT_SIZE); | 19 DCHECK(out->length() >= OUTPUT_SIZE); |
| 19 InputReader<Char> in(unicode_cache, str); | 20 InputReader<Char> in(unicode_cache, str); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 } | 187 } |
| 187 if (in_->SkipParentheses()) { | 188 if (in_->SkipParentheses()) { |
| 188 return DateToken::Unknown(); | 189 return DateToken::Unknown(); |
| 189 } | 190 } |
| 190 in_->Next(); | 191 in_->Next(); |
| 191 return DateToken::Unknown(); | 192 return DateToken::Unknown(); |
| 192 } | 193 } |
| 193 | 194 |
| 194 | 195 |
| 195 template <typename Char> | 196 template <typename Char> |
| 197 bool DateParser::InputReader<Char>::SkipWhiteSpace() { |
| 198 if (unicode_cache_->IsWhiteSpaceOrLineTerminator(ch_)) { |
| 199 Next(); |
| 200 return true; |
| 201 } |
| 202 return false; |
| 203 } |
| 204 |
| 205 |
| 206 template <typename Char> |
| 207 bool DateParser::InputReader<Char>::SkipParentheses() { |
| 208 if (ch_ != '(') return false; |
| 209 int balance = 0; |
| 210 do { |
| 211 if (ch_ == ')') --balance; |
| 212 else if (ch_ == '(') ++balance; |
| 213 Next(); |
| 214 } while (balance > 0 && ch_); |
| 215 return true; |
| 216 } |
| 217 |
| 218 |
| 219 template <typename Char> |
| 196 DateParser::DateToken DateParser::ParseES6DateTime( | 220 DateParser::DateToken DateParser::ParseES6DateTime( |
| 197 DateStringTokenizer<Char>* scanner, | 221 DateStringTokenizer<Char>* scanner, |
| 198 DayComposer* day, | 222 DayComposer* day, |
| 199 TimeComposer* time, | 223 TimeComposer* time, |
| 200 TimeZoneComposer* tz) { | 224 TimeZoneComposer* tz) { |
| 201 DCHECK(day->IsEmpty()); | 225 DCHECK(day->IsEmpty()); |
| 202 DCHECK(time->IsEmpty()); | 226 DCHECK(time->IsEmpty()); |
| 203 DCHECK(tz->IsEmpty()); | 227 DCHECK(tz->IsEmpty()); |
| 204 | 228 |
| 205 // Parse mandatory date string: [('-'|'+')yy]yyyy[':'MM[':'DD]] | 229 // Parse mandatory date string: [('-'|'+')yy]yyyy[':'MM[':'DD]] |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 } | 323 } |
| 300 // Successfully parsed ES6 Date Time String. | 324 // Successfully parsed ES6 Date Time String. |
| 301 day->set_iso_date(); | 325 day->set_iso_date(); |
| 302 return DateToken::EndOfInput(); | 326 return DateToken::EndOfInput(); |
| 303 } | 327 } |
| 304 | 328 |
| 305 | 329 |
| 306 } } // namespace v8::internal | 330 } } // namespace v8::internal |
| 307 | 331 |
| 308 #endif // V8_DATEPARSER_INL_H_ | 332 #endif // V8_DATEPARSER_INL_H_ |
| OLD | NEW |