diff options
| author | Misko Hevery | 2010-11-05 16:41:36 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-11-05 16:41:36 -0700 |
| commit | d5e9f38f3de317a74f2711e93c7a5df0c89099c7 (patch) | |
| tree | 439cb74357cd6f107c4b9c93cabb09c70757b5c1 /src/parser.js | |
| parent | dc66687149078876f3964a5ab0b9aa0434f46cdc (diff) | |
| download | angular.js-d5e9f38f3de317a74f2711e93c7a5df0c89099c7.tar.bz2 | |
fix error in json parser which did not allow 1.2E10 as number
Diffstat (limited to 'src/parser.js')
| -rw-r--r-- | src/parser.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/parser.js b/src/parser.js index 8dc8f9c2..77800209 100644 --- a/src/parser.js +++ b/src/parser.js @@ -101,26 +101,26 @@ function lex(text, parseStringsForObjects){ '_' == ch || ch == '$'; } function isExpOperator(ch) { - return ch == '-' || ch == '+'; + return ch == '-' || ch == '+' || isNumber(ch); } function readNumber() { var number = ""; var start = index; while (index < text.length) { - var ch = text.charAt(index); + var ch = lowercase(text.charAt(index)); if (ch == '.' || isNumber(ch)) { number += ch; } else { var peekCh = peek(); - if (ch == 'E' && isExpOperator(peekCh)) { + if (ch == 'e' && isExpOperator(peekCh)) { number += ch; } else if (isExpOperator(ch) && peekCh && isNumber(peekCh) && - number.charAt(number.length - 1) == 'E') { + number.charAt(number.length - 1) == 'e') { number += ch; } else if (isExpOperator(ch) && (!peekCh || !isNumber(peekCh)) && - number.charAt(number.length - 1) == 'E') { + number.charAt(number.length - 1) == 'e') { throw 'Lexer found invalid exponential value "' + text + '"'; } else { break; |
