WordPress.org

Make WordPress Core

Ticket #16669: json2.diff

File json2.diff, 7.6 KB (added by niallkennedy, 5 years ago)

latest JSON2

  • wp-includes/js/json2.dev.js

     
    11/* 
    22    http://www.JSON.org/json2.js 
    3     2009-08-17 
     3    2011-02-23 
    44 
    55    Public Domain. 
    66 
     
    88 
    99    See http://www.JSON.org/js.html 
    1010 
     11 
     12    This code should be minified before deployment. 
     13    See http://javascript.crockford.com/jsmin.html 
     14 
     15    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO 
     16    NOT CONTROL. 
     17 
     18 
    1119    This file creates a global JSON object containing two methods: stringify 
    1220    and parse. 
    1321 
     
    136144 
    137145    This is a reference implementation. You are free to copy, modify, or 
    138146    redistribute. 
    139  
    140     This code should be minified before deployment. 
    141     See http://javascript.crockford.com/jsmin.html 
    142  
    143     USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO 
    144     NOT CONTROL. 
    145147*/ 
    146148 
    147 /*jslint evil: true */ 
     149/*jslint evil: true, strict: false, regexp: false */ 
    148150 
    149151/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, 
    150152    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, 
     
    153155    test, toJSON, toString, valueOf 
    154156*/ 
    155157 
    156 "use strict"; 
    157158 
    158159// Create a JSON object only if one does not already exist. We create the 
    159160// methods in a closure to avoid creating global variables. 
    160161 
    161 if (!this.JSON) { 
    162     this.JSON = {}; 
     162var JSON; 
     163if (!JSON) { 
     164    JSON = {}; 
    163165} 
    164166 
    165167(function () { 
     168    "use strict"; 
    166169 
    167170    function f(n) { 
    168171        // Format integers to have at least two digits. 
     
    174177        Date.prototype.toJSON = function (key) { 
    175178 
    176179            return isFinite(this.valueOf()) ? 
    177                    this.getUTCFullYear()   + '-' + 
    178                  f(this.getUTCMonth() + 1) + '-' + 
    179                  f(this.getUTCDate())      + 'T' + 
    180                  f(this.getUTCHours())     + ':' + 
    181                  f(this.getUTCMinutes())   + ':' + 
    182                  f(this.getUTCSeconds())   + 'Z' : null; 
     180                this.getUTCFullYear()     + '-' + 
     181                f(this.getUTCMonth() + 1) + '-' + 
     182                f(this.getUTCDate())      + 'T' + 
     183                f(this.getUTCHours())     + ':' + 
     184                f(this.getUTCMinutes())   + ':' + 
     185                f(this.getUTCSeconds())   + 'Z' : null; 
    183186        }; 
    184187 
    185         String.prototype.toJSON = 
    186         Number.prototype.toJSON = 
    187         Boolean.prototype.toJSON = function (key) { 
    188             return this.valueOf(); 
    189         }; 
     188        String.prototype.toJSON      = 
     189            Number.prototype.toJSON = 
     190            Boolean.prototype.toJSON = function (key) { 
     191                return this.valueOf(); 
     192            }; 
    190193    } 
    191194 
    192195    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, 
     
    213216// sequences. 
    214217 
    215218        escapable.lastIndex = 0; 
    216         return escapable.test(string) ? 
    217             '"' + string.replace(escapable, function (a) { 
    218                 var c = meta[a]; 
    219                 return typeof c === 'string' ? c : 
    220                     '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); 
    221             }) + '"' : 
    222             '"' + string + '"'; 
     219        return escapable.test(string) ? '"' + string.replace(escapable, function (a) { 
     220            var c = meta[a]; 
     221            return typeof c === 'string' ? c : 
     222                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); 
     223        }) + '"' : '"' + string + '"'; 
    223224    } 
    224225 
    225226 
     
    302303// Join all of the elements together, separated with commas, and wrap them in 
    303304// brackets. 
    304305 
    305                 v = partial.length === 0 ? '[]' : 
    306                     gap ? '[\n' + gap + 
    307                             partial.join(',\n' + gap) + '\n' + 
    308                                 mind + ']' : 
    309                           '[' + partial.join(',') + ']'; 
     306                v = partial.length === 0 ? '[]' : gap ? 
     307                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : 
     308                    '[' + partial.join(',') + ']'; 
    310309                gap = mind; 
    311310                return v; 
    312311            } 
     
    316315            if (rep && typeof rep === 'object') { 
    317316                length = rep.length; 
    318317                for (i = 0; i < length; i += 1) { 
    319                     k = rep[i]; 
    320                     if (typeof k === 'string') { 
     318                    if (typeof rep[i] === 'string') { 
     319                        k = rep[i]; 
    321320                        v = str(k, value); 
    322321                        if (v) { 
    323322                            partial.push(quote(k) + (gap ? ': ' : ':') + v); 
     
    329328// Otherwise, iterate through all of the keys in the object. 
    330329 
    331330                for (k in value) { 
    332                     if (Object.hasOwnProperty.call(value, k)) { 
     331                    if (Object.prototype.hasOwnProperty.call(value, k)) { 
    333332                        v = str(k, value); 
    334333                        if (v) { 
    335334                            partial.push(quote(k) + (gap ? ': ' : ':') + v); 
     
    341340// Join all of the member texts together, separated with commas, 
    342341// and wrap them in braces. 
    343342 
    344             v = partial.length === 0 ? '{}' : 
    345                 gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + 
    346                         mind + '}' : '{' + partial.join(',') + '}'; 
     343            v = partial.length === 0 ? '{}' : gap ? 
     344                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : 
     345                '{' + partial.join(',') + '}'; 
    347346            gap = mind; 
    348347            return v; 
    349348        } 
     
    384383            rep = replacer; 
    385384            if (replacer && typeof replacer !== 'function' && 
    386385                    (typeof replacer !== 'object' || 
    387                      typeof replacer.length !== 'number')) { 
     386                    typeof replacer.length !== 'number')) { 
    388387                throw new Error('JSON.stringify'); 
    389388            } 
    390389 
     
    414413                var k, v, value = holder[key]; 
    415414                if (value && typeof value === 'object') { 
    416415                    for (k in value) { 
    417                         if (Object.hasOwnProperty.call(value, k)) { 
     416                        if (Object.prototype.hasOwnProperty.call(value, k)) { 
    418417                            v = walk(value, k); 
    419418                            if (v !== undefined) { 
    420419                                value[k] = v; 
     
    432431// Unicode characters with escape sequences. JavaScript handles many characters 
    433432// incorrectly, either silently deleting them, or treating them as line endings. 
    434433 
     434            text = String(text); 
    435435            cx.lastIndex = 0; 
    436436            if (cx.test(text)) { 
    437437                text = text.replace(cx, function (a) { 
     
    453453// we look to see that the remaining characters are only whitespace or ']' or 
    454454// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. 
    455455 
    456             if (/^[\],:{}\s]*$/. 
    457 test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). 
    458 replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). 
    459 replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     456            if (/^[\],:{}\s]*$/ 
     457                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') 
     458                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') 
     459                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
    460460 
    461461// In the third stage we use the eval function to compile the text into a 
    462462// JavaScript structure. The '{' operator is subject to a syntactic ambiguity 
     
    478478        }; 
    479479    } 
    480480}()); 
    481