| 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 = "";
|
| }
|
|
|