1/**��� 2 * jQuery JSON Plugin��� 3 * version: 2.3 (2011-09-17)��� 4 *��� 5 * This document is licensed as free software under the terms of the��� 6 * MIT License: http://www.opensource.org/licenses/mit-license.php��� 7 *��� 8 * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org��� 9 * website's http://www.json.org/json2.js, which proclaims:��� 10 * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that��� 11 * I uphold.��� 12 *��� 13 * It is also influenced heavily by MochiKit's serializeJSON, which is��� 14 * copyrighted 2005 by Bob Ippolito.��� 15 */��� 16��� 17(function( $ ) {��� 18��� 19 var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,��� 20 meta = {��� 21 '\b': '\\b',��� 22 '\t': '\\t',��� 23 '\n': '\\n',��� 24 '\f': '\\f',��� 25 '\r': '\\r',��� 26 '"' : '\\"',��� 27 '\\': '\\\\'��� 28 };��� 29��� 30 /**��� 31 * jQuery.toJSON��� 32 * Converts the given argument into a JSON respresentation.��� 33 *��� 34 * @param o {Mixed} The json-serializble *thing* to be converted��� 35 *��� 36 * If an object has a toJSON prototype, that will be used to get the representation.��� 37 * Non-integer/string keys are skipped in the object, as are keys that point to a��� 38 * function.��� 39 *��� 40 */��� 41 $.toJSON = typeof JSON === 'object' && JSON.stringify��� 42 ? JSON.stringify��� 43 : function( o ) {��� 44��� 45 if ( o === null ) {��� 46 return 'null';��� 47 }��� 48��� 49 var type = typeof o;��� 50��� 51 if ( type === 'undefined' ) {��� 52 return undefined;��� 53 }��� 54 if ( type === 'number' || type === 'boolean' ) {��� 55 return '' + o;��� 56 }��� 57 if ( type === 'string') {��� 58 return $.quoteString( o );��� 59 }��� 60 if ( type === 'object' ) {��� 61 if ( typeof o.toJSON === 'function' ) {��� 62 return $.toJSON( o.toJSON() );��� 63 }��� 64 if ( o.constructor === Date ) {��� 65 var month = o.getUTCMonth() + 1,��� 66 day = o.getUTCDate(),��� 67 year = o.getUTCFullYear(),��� 68 hours = o.getUTCHours(),��� 69 minutes = o.getUTCMinutes(),��� 70 seconds = o.getUTCSeconds(),��� 71 milli = o.getUTCMilliseconds();��� 72��� 73 if ( month < 10 ) {��� 74 month = '0' + month;��� 75 }��� 76 if ( day < 10 ) {��� 77 day = '0' + day;��� 78 }��� 79 if ( hours < 10 ) {��� 80 hours = '0' + hours;��� 81 }��� 82 if ( minutes < 10 ) {��� 83 minutes = '0' + minutes;��� 84 }��� 85 if ( seconds < 10 ) {��� 86 seconds = '0' + seconds;��� 87 }��� 88 if ( milli < 100 ) {��� 89 milli = '0' + milli;��� 90 }��� 91 if ( milli < 10 ) {��� 92 milli = '0' + milli;��� 93 }��� 94 return '"' + year + '-' + month + '-' + day + 'T' +��� 95 hours + ':' + minutes + ':' + seconds +��� 96 '.' + milli + 'Z"';��� 97 }��� 98 if ( o.constructor === Array ) {��� 99 var ret = [];��� 100 for ( var i = 0; i < o.length; i++ ) {��� 101 ret.push( $.toJSON( o[i] ) || 'null' );��� 102 }��� 103 return '[' + ret.join(',') + ']';��� 104 }��� 105 var name,��� 106 val,��� 107 pairs = [];��� 108 for ( var k in o ) {��� 109 type = typeof k;��� 110 if ( type === 'number' ) {��� 111 name = '"' + k + '"';��� 112 } else if (type === 'string') {��� 113 name = $.quoteString(k);��� 114 } else {��� 115 // Keys must be numerical or string. Skip others��� 116 continue;��� 117 }��� 118 type = typeof o[k];��� 119��� 120 if ( type === 'function' || type === 'undefined' ) {��� 121 // Invalid values like these return undefined��� 122 // from toJSON, however those object members��� 123 // shouldn't be included in the JSON string at all.��� 124 continue;��� 125 }��� 126 val = $.toJSON( o[k] );��� 127 pairs.push( name + ':' + val );��� 128 }��� 129 return '{' + pairs.join( ',' ) + '}';��� 130 }��� 131 };��� 132��� 133 /**��� 134 * jQuery.evalJSON��� 135 * Evaluates a given piece of json source.��� 136 *��� 137 * @param src {String}��� 138 */��� 139 $.evalJSON = typeof JSON === 'object' && JSON.parse��� 140 ? JSON.parse��� 141 : function( src ) {��� 142 return eval('(' + src + ')');��� 143 };��� 144��� 145 /**��� 146 * jQuery.secureEvalJSON��� 147 * Evals JSON in a way that is *more* secure.��� 148 *��� 149 * @param src {String}��� 150 */��� 151 $.secureEvalJSON = typeof JSON === 'object' && JSON.parse��� 152 ? JSON.parse��� 153 : function( src ) {��� 154��� 155 var filtered = ��� 156 src��� 157 .replace( /\\["\\\/bfnrtu]/g, '@' )��� 158 .replace( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')��� 159 .replace( /(?:^|:|,)(?:\s*\[)+/g, '');��� 160��� 161 if ( /^[\],:{}\s]*$/.test( filtered ) ) {��� 162 return eval( '(' + src + ')' );��� 163 } else {��� 164 throw new SyntaxError( 'Error parsing JSON, source is not val
164id.' );��� 165 }��� 166 };��� 167��� 168 /**��� 169 * jQuery.quoteString��� 170 * Returns a string-repr of a string, escaping quotes intelligently.��� 171 * Mostly a support function for toJSON.��� 172 * Examples:��� 173 * >>> jQuery.quoteString('apple')��� 174 * "apple"��� 175 *��� 176 * >>> jQuery.quoteString('"Where are we going?", she asked.')��� 177 * "\"Where are we going?\", she asked."��� 178 */��� 179 $.quoteString = function( string ) {��� 180 if ( string.match( escapeable ) ) {��� 181 return '"' + string.replace( escapeable, function( a ) {��� 182 var c = meta[a];��� 183 if ( typeof c === 'string' ) {��� 184 return c;��� 185 }��� 186 c = a.charCodeAt();��� 187 return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);��� 188 }) + '"';��� 189 }��� 190 return '"' + string + '"';��� 191 };��� 192��� 193})( jQuery );���
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.