aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2011-11-03 10:28:28 -0700
committerMisko Hevery2011-11-14 16:39:33 -0800
commitc6d2549a5255822290853aae8d922848b81bed62 (patch)
tree51183fb4dfba5dfd457b76b05f18f5a77f798798
parentbee6060e4b2499b385465e20f7a0dc2d11f003c0 (diff)
downloadangular.js-c6d2549a5255822290853aae8d922848b81bed62.tar.bz2
fix(JSON): json date parsing same native/ngular parser
-rw-r--r--src/JSON.js6
-rw-r--r--src/service/parse.js20
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,