src/cm/media/js/lib/yui/yui3-3.15.0/build/json-stringify-shim/json-stringify-shim-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('json-stringify-shim', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
// All internals kept private for security reasons
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
var Lang      = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
    isFunction= Lang.isFunction,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
    isObject  = Lang.isObject,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
    isArray   = Lang.isArray,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
    _toStr    = Object.prototype.toString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
    UNDEFINED = 'undefined',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
    OBJECT    = 'object',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    NULL      = 'null',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    STRING    = 'string',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    NUMBER    = 'number',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    BOOLEAN   = 'boolean',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    DATE      = 'date',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    _allowable= {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
        'undefined'        : UNDEFINED,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
        'string'           : STRING,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
        '[object String]'  : STRING,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
        'number'           : NUMBER,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
        '[object Number]'  : NUMBER,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        'boolean'          : BOOLEAN,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
        '[object Boolean]' : BOOLEAN,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
        '[object Date]'    : DATE,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
        '[object RegExp]'  : OBJECT
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    EMPTY     = '',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    OPEN_O    = '{',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
    CLOSE_O   = '}',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
    OPEN_A    = '[',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    CLOSE_A   = ']',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    COMMA     = ',',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    COMMA_CR  = ",\n",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    CR        = "\n",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    COLON     = ':',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    COLON_SP  = ': ',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    QUOTE     = '"',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    // Regex used to capture characters that need escaping before enclosing
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    // their containing string in quotes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    _SPECIAL = /[\x00-\x07\x0b\x0e-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    // Character substitution map for common escapes and special characters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    _COMMON = [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        [/\\/g, '\\\\'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        [/\"/g, '\\"'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        [/\x08/g, '\\b'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        [/\x09/g, '\\t'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        [/\x0a/g, '\\n'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        [/\x0c/g, '\\f'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
        [/\x0d/g, '\\r']
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    ],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    _COMMON_LENGTH = _COMMON.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
    // In-process optimization for special character escapes that haven't yet
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
    // been promoted to _COMMON
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
    _CHAR = {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    // Per-char counter to determine if it's worth fast tracking a special
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    // character escape sequence.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    _CHAR_COUNT, _CACHE_THRESHOLD;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
// Utility function used to determine how to serialize a variable.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
function _type(o) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
    var t = typeof o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    return  _allowable[t] ||              // number, string, boolean, undefined
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            _allowable[_toStr.call(o)] || // Number, String, Boolean, Date
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
            (t === OBJECT ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                (o ? OBJECT : NULL) :     // object, array, null, misc natives
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
                UNDEFINED);               // function, unknown
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
// Escapes a special character to a safe Unicode representation
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
function _char(c) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
    if (!_CHAR[c]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        _CHAR[c] = '\\u'+('0000'+(+(c.charCodeAt(0))).toString(16)).slice(-4);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
        _CHAR_COUNT[c] = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
    // === to avoid this conditional for the remainder of the current operation
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
    if (++_CHAR_COUNT[c] === _CACHE_THRESHOLD) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        _COMMON.push([new RegExp(c, 'g'), _CHAR[c]]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        _COMMON_LENGTH = _COMMON.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
    return _CHAR[c];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
// Enclose escaped strings in quotes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
function _string(s) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
    var i, chr;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    // Preprocess the string against common characters to avoid function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    // overhead associated with replacement via function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
    for (i = 0; i < _COMMON_LENGTH; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        chr = _COMMON[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        s = s.replace(chr[0], chr[1]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    // original function replace for the not-as-common set of chars
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
    return QUOTE + s.replace(_SPECIAL, _char) + QUOTE;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
// Adds the provided space to the beginning of every line in the input string
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
function _indent(s,space) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
    return s.replace(/^/gm, space);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
Y.JSON.stringify = function _stringify(o,w,space) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
    if (o === undefined) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
        return undefined;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
    var replacer = isFunction(w) ? w : null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
        format   = _toStr.call(space).match(/String|Number/) || [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
        _date    = Y.JSON.dateToString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
        stack    = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
        tmp,i,len;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
    _CHAR_COUNT      = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    _CACHE_THRESHOLD = Y.JSON.charCacheThreshold;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
    if (replacer || !isArray(w)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        w = undefined;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
    // Ensure whitelist keys are unique (bug 2110391)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    if (w) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        tmp = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
        for (i = 0, len = w.length; i < len; ++i) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
            tmp[w[i]] = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
        w = tmp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    // Per the spec, strings are truncated to 10 characters and numbers
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
    // are converted to that number of spaces (max 10)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    space = format[0] === 'Number' ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
                new Array(Math.min(Math.max(0,space),10)+1).join(" ") :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
                (space || EMPTY).slice(0,10);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
    function _serialize(h,key) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
        var value = h[key],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            t     = _type(value),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            a     = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
            colon = space ? COLON_SP : COLON,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
            arr, i, keys, k, v;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
        // Per the ECMA 5 spec, toJSON is applied before the replacer is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
        // called.  Also per the spec, Date.prototype.toJSON has been added, so
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
        // Date instances should be serialized prior to exposure to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        // replacer.  I disagree with this decision, but the spec is the spec.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
        if (isObject(value) && isFunction(value.toJSON)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
            value = value.toJSON(key);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
        } else if (t === DATE) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
            value = _date(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
        if (isFunction(replacer)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
            value = replacer.call(h,key,value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
        if (value !== h[key]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            t = _type(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
        switch (t) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
            case DATE    : // intentional fallthrough.  Pre-replacer Dates are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
                           // serialized in the toJSON stage.  Dates here would
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
                           // have been produced by the replacer.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
            case OBJECT  : break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
            case STRING  : return _string(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            case NUMBER  : return isFinite(value) ? value+EMPTY : NULL;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
            case BOOLEAN : return value+EMPTY;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
            case NULL    : return NULL;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            default      : return undefined;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
        // Check for cyclical references in nested objects
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
        for (i = stack.length - 1; i >= 0; --i) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
            if (stack[i] === value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
                throw new Error("JSON.stringify. Cyclical reference");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
        arr = isArray(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
        // Add the object to the processing stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
        stack.push(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
        if (arr) { // Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
            for (i = value.length - 1; i >= 0; --i) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
                a[i] = _serialize(value, i) || NULL;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
        } else {   // Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
            // If whitelist provided, take only those keys
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
            keys = w || value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
            i = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
            for (k in keys) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
                if (keys.hasOwnProperty(k)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
                    v = _serialize(value, k);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
                    if (v) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
                        a[i++] = _string(k) + colon + v;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
        // remove the array from the stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
        stack.pop();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        if (space && a.length) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
            return arr ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
                OPEN_A + CR + _indent(a.join(COMMA_CR), space) + CR + CLOSE_A :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
                OPEN_O + CR + _indent(a.join(COMMA_CR), space) + CR + CLOSE_O;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
            return arr ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
                OPEN_A + a.join(COMMA) + CLOSE_A :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
                OPEN_O + a.join(COMMA) + CLOSE_O;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
    // process the input
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
    return _serialize({'':o},'');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
// Property available for testing if the implementation being used
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
// is native or a shim
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
Y.JSON.stringify.isShim = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
}, '@VERSION@', {"requires": ["json-stringify"]});