Index: src/json-delay.js |
diff --git a/src/json-delay.js b/src/json-delay.js |
index 7788f516b8049d0fb7da2b7ac31a69f6faa5d8e2..641f31cec3e5c2e3a92cef35ddbff779eeb48b85 100644 |
--- a/src/json-delay.js |
+++ b/src/json-delay.js |
@@ -80,8 +80,9 @@ var characterQuoteCache = { |
}; |
function QuoteSingleJSONCharacter(c) { |
- if (c in characterQuoteCache) |
+ if (c in characterQuoteCache) { |
return characterQuoteCache[c]; |
+ } |
var charCode = c.charCodeAt(0); |
var result; |
if (charCode < 16) result = '\\u000'; |
@@ -108,8 +109,9 @@ function StackContains(stack, val) { |
} |
function SerializeArray(value, replacer, stack, indent, gap) { |
- if (StackContains(stack, value)) |
+ if (StackContains(stack, value)) { |
throw MakeTypeError('circular_structure', []); |
+ } |
stack.push(value); |
var stepback = indent; |
indent += gap; |
@@ -117,9 +119,10 @@ function SerializeArray(value, replacer, stack, indent, gap) { |
var len = value.length; |
for (var i = 0; i < len; i++) { |
var strP = JSONSerialize($String(i), value, replacer, stack, |
- indent, gap); |
- if (IS_UNDEFINED(strP)) |
+ indent, gap); |
+ if (IS_UNDEFINED(strP)) { |
strP = "null"; |
+ } |
partial.push(strP); |
} |
var final; |
@@ -137,8 +140,9 @@ function SerializeArray(value, replacer, stack, indent, gap) { |
} |
function SerializeObject(value, replacer, stack, indent, gap) { |
- if (StackContains(stack, value)) |
+ if (StackContains(stack, value)) { |
throw MakeTypeError('circular_structure', []); |
+ } |
stack.push(value); |
var stepback = indent; |
indent += gap; |
@@ -188,17 +192,21 @@ function JSONSerialize(key, holder, replacer, stack, indent, gap) { |
var value = holder[key]; |
if (IS_OBJECT(value) && value) { |
var toJSON = value.toJSON; |
- if (IS_FUNCTION(toJSON)) |
+ if (IS_FUNCTION(toJSON)) { |
value = toJSON.call(value, key); |
+ } |
} |
- if (IS_FUNCTION(replacer)) |
+ if (IS_FUNCTION(replacer)) { |
value = replacer.call(holder, key, value); |
+ } |
// Unwrap value if necessary |
if (IS_OBJECT(value)) { |
if (IS_NUMBER_WRAPPER(value)) { |
value = $Number(value); |
} else if (IS_STRING_WRAPPER(value)) { |
value = $String(value); |
+ } else if (IS_BOOLEAN_WRAPPER(value)) { |
+ value = $Boolean(value); |
} |
} |
switch (typeof value) { |
@@ -232,12 +240,17 @@ function JSONStringify(value, replacer, space) { |
} |
var gap; |
if (IS_NUMBER(space)) { |
- space = $Math.min(space, 100); |
+ space = $Math.min(space, 10); |
gap = ""; |
- for (var i = 0; i < space; i++) |
+ for (var i = 0; i < space; i++) { |
gap += " "; |
+ } |
} else if (IS_STRING(space)) { |
- gap = space; |
+ if (space.length > 10) { |
+ gap = space.substring(0, 10); |
+ } else { |
+ gap = space; |
+ } |
} else { |
gap = ""; |
} |