src/cm/media/js/lib/yui/yui_3.10.3/build/json-stringify/json-stringify.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('json-stringify', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Provides Y.JSON.stringify method for converting objects to JSON strings.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module json
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @submodule json-stringify
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @for JSON
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
var COLON     = ':',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    _JSON     = Y.config.global.JSON;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
Y.mix(Y.namespace('JSON'), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
     * Serializes a Date instance as a UTC date string.  Used internally by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
     * stringify.  Override this method if you need Dates serialized in a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
     * different format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
     * @method dateToString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
     * @param d {Date} The Date to serialize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
     * @return {String} stringified Date in UTC format YYYY-MM-DDTHH:mm:SSZ
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     * @deprecated Use a replacer function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    dateToString: function (d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        function _zeroPad(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
            return v < 10 ? '0' + v : v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        return d.getUTCFullYear()           + '-' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
              _zeroPad(d.getUTCMonth() + 1) + '-' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
              _zeroPad(d.getUTCDate())      + 'T' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
              _zeroPad(d.getUTCHours())     + COLON +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
              _zeroPad(d.getUTCMinutes())   + COLON +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
              _zeroPad(d.getUTCSeconds())   + 'Z';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     * <p>Converts an arbitrary value to a JSON string representation.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
     * <p>Objects with cyclical references will trigger an exception.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
     * <p>If a whitelist is provided, only matching object keys will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
     * included.  Alternately, a replacer function may be passed as the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
     * second parameter.  This function is executed on every value in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
     * input, and its return value will be used in place of the original value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
     * This is useful to serialize specialized objects or class instances.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * <p>If a positive integer or non-empty string is passed as the third
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     * parameter, the output will be formatted with carriage returns and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
     * indentation for readability.  If a String is passed (such as "\t") it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
     * will be used once for each indentation level.  If a number is passed,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
     * that number of spaces will be used.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
     * @method stringify
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
     * @param o {MIXED} any arbitrary value to convert to JSON string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
     * @param w {Array|Function} (optional) whitelist of acceptable object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
     *                  keys to include, or a replacer function to modify the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     *                  raw value before serialization
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * @param ind {Number|String} (optional) indentation character or depth of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     *                  spaces to format the output.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * @return {string} JSON string representation of the input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    stringify: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        return _JSON.stringify.apply(_JSON, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * <p>Number of occurrences of a special character within a single call to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * stringify that should trigger promotion of that character to a dedicated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * preprocess step for future calls.  This is only used in environments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * that don't support native JSON, or when useNativeJSONStringify is set to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * false.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     * <p>So, if set to 50 and an object is passed to stringify that includes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     * strings containing the special character \x07 more than 50 times,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
     * subsequent calls to stringify will process object strings through a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
     * faster serialization path for \x07 before using the generic, slower,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
     * replacement process for all special characters.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
     * <p>To prime the preprocessor cache, set this value to 1, then call
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     * <code>Y.JSON.stringify("<em>(all special characters to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * cache)</em>");</code>, then return this setting to a more conservative
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * value.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * <p>Special characters \ " \b \t \n \f \r are already cached.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     * @property charCacheThreshold
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     * @default 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * @type {Number}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    charCacheThreshold: 100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
}, '3.10.3', {"requires": ["yui-base"]});