| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-JSON'>/**
 
- </span> * Modified version of [Douglas Crockford's JSON.js][dc] that doesn't
 
-  * mess with the Object prototype.
 
-  *
 
-  * [dc]: http://www.json.org/js.html
 
-  *
 
-  * @singleton
 
-  */
 
- Ext.JSON = (new(function() {
 
-     var me = this,
 
-     encodingFunction,
 
-     decodingFunction,
 
-     useNative = null,
 
-     useHasOwn = !! {}.hasOwnProperty,
 
-     isNative = function() {
 
-         if (useNative === null) {
 
-             useNative = Ext.USE_NATIVE_JSON && window.JSON && JSON.toString() == '[object JSON]';
 
-         }
 
-         return useNative;
 
-     },
 
-     pad = function(n) {
 
-         return n < 10 ? "0" + n : n;
 
-     },
 
-     doDecode = function(json) {
 
-         return eval("(" + json + ')');
 
-     },
 
-     doEncode = function(o, newline) {
 
-         // http://jsperf.com/is-undefined
 
-         if (o === null || o === undefined) {
 
-             return "null";
 
-         } else if (Ext.isDate(o)) {
 
-             return Ext.JSON.encodeDate(o);
 
-         } else if (Ext.isString(o)) {
 
-             return Ext.JSON.encodeString(o);
 
-         } else if (typeof o == "number") {
 
-             //don't use isNumber here, since finite checks happen inside isNumber
 
-             return isFinite(o) ? String(o) : "null";
 
-         } else if (Ext.isBoolean(o)) {
 
-             return String(o);
 
-         }
 
-         // Allow custom zerialization by adding a toJSON method to any object type.
 
-         // Date/String have a toJSON in some environments, so check these first.
 
-         else if (o.toJSON) {
 
-             return o.toJSON();
 
-         } else if (Ext.isArray(o)) {
 
-             return encodeArray(o, newline);
 
-         } else if (Ext.isObject(o)) {
 
-             return encodeObject(o, newline);
 
-         } else if (typeof o === "function") {
 
-             return "null";
 
-         }
 
-         return 'undefined';
 
-     },
 
-     m = {
 
-         "\b": '\\b',
 
-         "\t": '\\t',
 
-         "\n": '\\n',
 
-         "\f": '\\f',
 
-         "\r": '\\r',
 
-         '"': '\\"',
 
-         "\\": '\\\\',
 
-         '\x0b': '\\u000b' //ie doesn't handle \v
 
-     },
 
-     charToReplace = /[\\\"\x00-\x1f\x7f-\uffff]/g,
 
-     encodeString = function(s) {
 
-         return '"' + s.replace(charToReplace, function(a) {
 
-             var c = m[a];
 
-             return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
 
-         }) + '"';
 
-     },
 
-     //<debug>
 
-     encodeArrayPretty = function(o, newline) {
 
-         var len = o.length,
 
-             cnewline = newline + '   ',
 
-             sep = ',' + cnewline,
 
-             a = ["[", cnewline], // Note newline in case there are no members
 
-             i;
 
-         for (i = 0; i < len; i += 1) {
 
-             a.push(Ext.JSON.encodeValue(o[i], cnewline), sep);
 
-         }
 
-         // Overwrite trailing comma (or empty string)
 
-         a[a.length - 1] = newline + ']';
 
-         return a.join('');
 
-     },
 
-     encodeObjectPretty = function(o, newline) {
 
-         var cnewline = newline + '   ',
 
-             sep = ',' + cnewline,
 
-             a = ["{", cnewline], // Note newline in case there are no members
 
-             i;
 
-         for (i in o) {
 
-             if (!useHasOwn || o.hasOwnProperty(i)) {
 
-                 a.push(Ext.JSON.encodeValue(i) + ': ' + Ext.JSON.encodeValue(o[i], cnewline), sep);
 
-             }
 
-         }
 
-         // Overwrite trailing comma (or empty string)
 
-         a[a.length - 1] = newline + '}';
 
-         return a.join('');
 
-     },
 
-     //</debug>
 
-     encodeArray = function(o, newline) {
 
-         //<debug>
 
-         if (newline) {
 
-             return encodeArrayPretty(o, newline);
 
-         }
 
-         //</debug>
 
-         var a = ["[", ""], // Note empty string in case there are no serializable members.
 
-             len = o.length,
 
-             i;
 
-         for (i = 0; i < len; i += 1) {
 
-             a.push(Ext.JSON.encodeValue(o[i]), ',');
 
-         }
 
-         // Overwrite trailing comma (or empty string)
 
-         a[a.length - 1] = ']';
 
-         return a.join("");
 
-     },
 
-     encodeObject = function(o, newline) {
 
-         //<debug>
 
-         if (newline) {
 
-             return encodeObjectPretty(o, newline);
 
-         }
 
-         //</debug>
 
-         var a = ["{", ""], // Note empty string in case there are no serializable members.
 
-             i;
 
-         for (i in o) {
 
-             if (!useHasOwn || o.hasOwnProperty(i)) {
 
-                 a.push(Ext.JSON.encodeValue(i), ":", Ext.JSON.encodeValue(o[i]), ',');
 
-             }
 
-         }
 
-         // Overwrite trailing comma (or empty string)
 
-         a[a.length - 1] = '}';
 
-         return a.join("");
 
-     };
 
-     
 
- <span id='Ext-JSON-method-encodeString'>    /**
 
- </span>     * Encodes a String. This returns the actual string which is inserted into the JSON string as the literal
 
-      * expression. **The returned value includes enclosing double quotation marks.**
 
-      *
 
-      * To override this:
 
-      *
 
-      *     Ext.JSON.encodeString = function(s) {
 
-      *         return 'Foo' + s;
 
-      *     };
 
-      *
 
-      * @param {String} s The String to encode
 
-      * @return {String} The string literal to use in a JSON string.
 
-      * @method
 
-      */
 
-     me.encodeString = encodeString;
 
- <span id='Ext-JSON-method-encodeValue'>    /**
 
- </span>     * The function which {@link #encode} uses to encode all javascript values to their JSON representations
 
-      * when {@link Ext#USE_NATIVE_JSON} is `false`.
 
-      * 
 
-      * This is made public so that it can be replaced with a custom implementation.
 
-      *
 
-      * @param {Object} o Any javascript value to be converted to its JSON representation
 
-      * @return {String} The JSON representation of the passed value.
 
-      * @method
 
-      */
 
-     me.encodeValue = doEncode;
 
- <span id='Ext-JSON-method-encodeDate'>    /**
 
- </span>     * Encodes a Date. This returns the actual string which is inserted into the JSON string as the literal
 
-      * expression. **The returned value includes enclosing double quotation marks.**
 
-      *
 
-      * The default return format is `"yyyy-mm-ddThh:mm:ss"`.
 
-      *
 
-      * To override this:
 
-      *
 
-      *     Ext.JSON.encodeDate = function(d) {
 
-      *         return Ext.Date.format(d, '"Y-m-d"');
 
-      *     };
 
-      *
 
-      * @param {Date} d The Date to encode
 
-      * @return {String} The string literal to use in a JSON string.
 
-      */
 
-     me.encodeDate = function(o) {
 
-         return '"' + o.getFullYear() + "-"
 
-         + pad(o.getMonth() + 1) + "-"
 
-         + pad(o.getDate()) + "T"
 
-         + pad(o.getHours()) + ":"
 
-         + pad(o.getMinutes()) + ":"
 
-         + pad(o.getSeconds()) + '"';
 
-     };
 
- <span id='Ext-JSON-method-encode'>    /**
 
- </span>     * Encodes an Object, Array or other value.
 
-      * 
 
-      * If the environment's native JSON encoding is not being used ({@link Ext#USE_NATIVE_JSON} is not set,
 
-      * or the environment does not support it), then ExtJS's encoding will be used. This allows the developer
 
-      * to add a `toJSON` method to their classes which need serializing to return a valid JSON representation
 
-      * of the object.
 
-      * 
 
-      * @param {Object} o The variable to encode
 
-      * @return {String} The JSON string
 
-      */
 
-     me.encode = function(o) {
 
-         if (!encodingFunction) {
 
-             // setup encoding function on first access
 
-             encodingFunction = isNative() ? JSON.stringify : me.encodeValue;
 
-         }
 
-         return encodingFunction(o);
 
-     };
 
- <span id='Ext-JSON-method-decode'>    /**
 
- </span>     * Decodes (parses) a JSON string to an object. If the JSON is invalid, this function throws
 
-      * a SyntaxError unless the safe option is set.
 
-      *
 
-      * @param {String} json The JSON string
 
-      * @param {Boolean} [safe=false] True to return null, false to throw an exception if the JSON is invalid.
 
-      * @return {Object} The resulting object
 
-      */
 
-     me.decode = function(json, safe) {
 
-         if (!decodingFunction) {
 
-             // setup decoding function on first access
 
-             decodingFunction = isNative() ? JSON.parse : doDecode;
 
-         }
 
-         try {
 
-             return decodingFunction(json);
 
-         } catch (e) {
 
-             if (safe === true) {
 
-                 return null;
 
-             }
 
-             Ext.Error.raise({
 
-                 sourceClass: "Ext.JSON",
 
-                 sourceMethod: "decode",
 
-                 msg: "You're trying to decode an invalid JSON String: " + json
 
-             });
 
-         }
 
-     };
 
- })());
 
- <span id='Ext-method-encode'>/**
 
- </span> * Shorthand for {@link Ext.JSON#encode}
 
-  * @member Ext
 
-  * @method encode
 
-  * @inheritdoc Ext.JSON#encode
 
-  */
 
- Ext.encode = Ext.JSON.encode;
 
- <span id='Ext-method-decode'>/**
 
- </span> * Shorthand for {@link Ext.JSON#decode}
 
-  * @member Ext
 
-  * @method decode
 
-  * @inheritdoc Ext.JSON#decode
 
-  */
 
- Ext.decode = Ext.JSON.decode;</pre>
 
- </body>
 
- </html>
 
 
  |