Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

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