From 08aa4418c30cfc18ccc69a0f0f9cb9e17be6c196 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Mon, 12 Aug 2013 09:28:15 +0200 Subject: Update to MediaWiki 1.21.1 --- resources/jquery/jquery.json.js | 250 ++++++++++++++++++++-------------------- 1 file changed, 128 insertions(+), 122 deletions(-) (limited to 'resources/jquery/jquery.json.js') diff --git a/resources/jquery/jquery.json.js b/resources/jquery/jquery.json.js index aac3428b..75953f4d 100644 --- a/resources/jquery/jquery.json.js +++ b/resources/jquery/jquery.json.js @@ -1,168 +1,174 @@ /** - * jQuery JSON Plugin - * version: 2.3 (2011-09-17) + * jQuery JSON plugin 2.4.0 * - * This document is licensed as free software under the terms of the - * MIT License: http://www.opensource.org/licenses/mit-license.php - * - * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org - * website's http://www.json.org/json2.js, which proclaims: - * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that - * I uphold. - * - * It is also influenced heavily by MochiKit's serializeJSON, which is - * copyrighted 2005 by Bob Ippolito. + * @author Brantley Harris, 2009-2011 + * @author Timo Tijhof, 2011-2012 + * @source This plugin is heavily influenced by MochiKit's serializeJSON, which is + * copyrighted 2005 by Bob Ippolito. + * @source Brantley Harris wrote this plugin. It is based somewhat on the JSON.org + * website's http://www.json.org/json2.js, which proclaims: + * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that + * I uphold. + * @license MIT License */ +(function ($) { + 'use strict'; -(function( $ ) { - - var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g, - meta = { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }; + var escape = /["\\\x00-\x1f\x7f-\x9f]/g, + meta = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + hasOwn = Object.prototype.hasOwnProperty; /** * jQuery.toJSON - * Converts the given argument into a JSON respresentation. + * Converts the given argument into a JSON representation. * - * @param o {Mixed} The json-serializble *thing* to be converted + * @param o {Mixed} The json-serializable *thing* to be converted * * If an object has a toJSON prototype, that will be used to get the representation. * Non-integer/string keys are skipped in the object, as are keys that point to a * function. * */ - $.toJSON = typeof JSON === 'object' && JSON.stringify - ? JSON.stringify - : function( o ) { - - if ( o === null ) { + $.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) { + if (o === null) { return 'null'; } - var type = typeof o; + var pairs, k, name, val, + type = $.type(o); - if ( type === 'undefined' ) { + if (type === 'undefined') { return undefined; } - if ( type === 'number' || type === 'boolean' ) { - return '' + o; + + // Also covers instantiated Number and Boolean objects, + // which are typeof 'object' but thanks to $.type, we + // catch them here. I don't know whether it is right + // or wrong that instantiated primitives are not + // exported to JSON as an {"object":..}. + // We choose this path because that's what the browsers did. + if (type === 'number' || type === 'boolean') { + return String(o); } - if ( type === 'string') { - return $.quoteString( o ); + if (type === 'string') { + return $.quoteString(o); } - if ( type === 'object' ) { - if ( typeof o.toJSON === 'function' ) { - return $.toJSON( o.toJSON() ); - } - if ( o.constructor === Date ) { - var month = o.getUTCMonth() + 1, - day = o.getUTCDate(), - year = o.getUTCFullYear(), - hours = o.getUTCHours(), - minutes = o.getUTCMinutes(), - seconds = o.getUTCSeconds(), - milli = o.getUTCMilliseconds(); + if (typeof o.toJSON === 'function') { + return $.toJSON(o.toJSON()); + } + if (type === 'date') { + var month = o.getUTCMonth() + 1, + day = o.getUTCDate(), + year = o.getUTCFullYear(), + hours = o.getUTCHours(), + minutes = o.getUTCMinutes(), + seconds = o.getUTCSeconds(), + milli = o.getUTCMilliseconds(); - if ( month < 10 ) { - month = '0' + month; - } - if ( day < 10 ) { - day = '0' + day; - } - if ( hours < 10 ) { - hours = '0' + hours; - } - if ( minutes < 10 ) { - minutes = '0' + minutes; - } - if ( seconds < 10 ) { - seconds = '0' + seconds; - } - if ( milli < 100 ) { - milli = '0' + milli; - } - if ( milli < 10 ) { - milli = '0' + milli; - } - return '"' + year + '-' + month + '-' + day + 'T' + - hours + ':' + minutes + ':' + seconds + - '.' + milli + 'Z"'; + if (month < 10) { + month = '0' + month; } - if ( o.constructor === Array ) { - var ret = []; - for ( var i = 0; i < o.length; i++ ) { - ret.push( $.toJSON( o[i] ) || 'null' ); - } - return '[' + ret.join(',') + ']'; + if (day < 10) { + day = '0' + day; + } + if (hours < 10) { + hours = '0' + hours; + } + if (minutes < 10) { + minutes = '0' + minutes; + } + if (seconds < 10) { + seconds = '0' + seconds; + } + if (milli < 100) { + milli = '0' + milli; + } + if (milli < 10) { + milli = '0' + milli; + } + return '"' + year + '-' + month + '-' + day + 'T' + + hours + ':' + minutes + ':' + seconds + + '.' + milli + 'Z"'; + } + + pairs = []; + + if ($.isArray(o)) { + for (k = 0; k < o.length; k++) { + pairs.push($.toJSON(o[k]) || 'null'); } - var name, - val, - pairs = []; - for ( var k in o ) { - type = typeof k; - if ( type === 'number' ) { - name = '"' + k + '"'; - } else if (type === 'string') { - name = $.quoteString(k); - } else { + return '[' + pairs.join(',') + ']'; + } + + // Any other object (plain object, RegExp, ..) + // Need to do typeof instead of $.type, because we also + // want to catch non-plain objects. + if (typeof o === 'object') { + for (k in o) { + // Only include own properties, + // Filter out inherited prototypes + if (hasOwn.call(o, k)) { // Keys must be numerical or string. Skip others - continue; - } - type = typeof o[k]; + type = typeof k; + if (type === 'number') { + name = '"' + k + '"'; + } else if (type === 'string') { + name = $.quoteString(k); + } else { + continue; + } + type = typeof o[k]; - if ( type === 'function' || type === 'undefined' ) { // Invalid values like these return undefined // from toJSON, however those object members // shouldn't be included in the JSON string at all. - continue; + if (type !== 'function' && type !== 'undefined') { + val = $.toJSON(o[k]); + pairs.push(name + ':' + val); + } } - val = $.toJSON( o[k] ); - pairs.push( name + ':' + val ); } - return '{' + pairs.join( ',' ) + '}'; + return '{' + pairs.join(',') + '}'; } }; /** * jQuery.evalJSON - * Evaluates a given piece of json source. + * Evaluates a given json string. * - * @param src {String} + * @param str {String} */ - $.evalJSON = typeof JSON === 'object' && JSON.parse - ? JSON.parse - : function( src ) { - return eval('(' + src + ')'); + $.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) { + /*jshint evil: true */ + return eval('(' + str + ')'); }; /** * jQuery.secureEvalJSON * Evals JSON in a way that is *more* secure. * - * @param src {String} + * @param str {String} */ - $.secureEvalJSON = typeof JSON === 'object' && JSON.parse - ? JSON.parse - : function( src ) { - + $.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) { var filtered = - src - .replace( /\\["\\\/bfnrtu]/g, '@' ) - .replace( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace( /(?:^|:|,)(?:\s*\[)+/g, ''); + str + .replace(/\\["\\\/bfnrtu]/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''); - if ( /^[\],:{}\s]*$/.test( filtered ) ) { - return eval( '(' + src + ')' ); - } else { - throw new SyntaxError( 'Error parsing JSON, source is not valid.' ); + if (/^[\],:{}\s]*$/.test(filtered)) { + /*jshint evil: true */ + return eval('(' + str + ')'); } + throw new SyntaxError('Error parsing JSON, source is not valid.'); }; /** @@ -176,18 +182,18 @@ * >>> jQuery.quoteString('"Where are we going?", she asked.') * "\"Where are we going?\", she asked." */ - $.quoteString = function( string ) { - if ( string.match( escapeable ) ) { - return '"' + string.replace( escapeable, function( a ) { + $.quoteString = function (str) { + if (str.match(escape)) { + return '"' + str.replace(escape, function (a) { var c = meta[a]; - if ( typeof c === 'string' ) { + if (typeof c === 'string') { return c; } c = a.charCodeAt(); return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); }) + '"'; } - return '"' + string + '"'; + return '"' + str + '"'; }; -})( jQuery ); +}(jQuery)); -- cgit v1.2.3-54-g00ecf