diff options
| author | Misko Hevery | 2011-11-03 10:28:28 -0700 |
|---|---|---|
| committer | Misko Hevery | 2011-11-14 16:39:33 -0800 |
| commit | c6d2549a5255822290853aae8d922848b81bed62 (patch) | |
| tree | 51183fb4dfba5dfd457b76b05f18f5a77f798798 /src | |
| parent | bee6060e4b2499b385465e20f7a0dc2d11f003c0 (diff) | |
| download | angular.js-c6d2549a5255822290853aae8d922848b81bed62.tar.bz2 | |
fix(JSON): json date parsing same native/ngular parser
Diffstat (limited to 'src')
| -rw-r--r-- | src/JSON.js | 6 | ||||
| -rw-r--r-- | src/service/parse.js | 20 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/JSON.js b/src/JSON.js index 7fdbf1a1..d0ded009 100644 --- a/src/JSON.js +++ b/src/JSON.js @@ -40,15 +40,17 @@ function fromJson(json, useNative) { try { if (useNative && window.JSON && window.JSON.parse) { obj = JSON.parse(json); - return transformDates(obj); + } else { + obj = parser(json, true).primary()(); } - return parser(json, true).primary()(); + return transformDates(obj); } catch (e) { error("fromJson error: ", json, e); throw e; } // TODO make forEach optionally recursive and remove this function + // TODO(misko): remove this once the $http service is checked in. function transformDates(obj) { if (isString(obj) && obj.length === DATE_ISOSTRING_LN) { return angularString.toDate(obj); diff --git a/src/service/parse.js b/src/service/parse.js index 41fff7d5..f7b24a3c 100644 --- a/src/service/parse.js +++ b/src/service/parse.js @@ -27,9 +27,8 @@ var OPERATORS = { }; var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'}; -function lex(text, parseStringsForObjects){ - var dateParseLength = parseStringsForObjects ? DATE_ISOSTRING_LN : -1, - tokens = [], +function lex(text){ + var tokens = [], token, index = 0, json = [], @@ -199,12 +198,13 @@ function lex(text, parseStringsForObjects){ escape = true; } else if (ch == quote) { index++; - tokens.push({index:start, text:rawString, string:string, json:true, - fn:function() { - return (string.length == dateParseLength) - ? angular['String']['toDate'](string) - : string; - }}); + tokens.push({ + index:start, + text:rawString, + string:string, + json:true, + fn:function() { return string; } + }); return; } else { string += ch; @@ -219,7 +219,7 @@ function lex(text, parseStringsForObjects){ function parser(text, json){ var ZERO = valueFn(0), - tokens = lex(text, json), + tokens = lex(text), assignment = _assignment, assignable = logicalOR, functionCall = _functionCall, |
