From 3efa10769c331a1da21bdf9ff30bb127d8619681 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 10 Sep 2013 13:43:50 +0200 Subject: [PATCH] json2 extlib updated to 2013-05-26 version Includes minification and Makefile update --- js/Makefile | 4 +- js/{ => extlib}/json2.js | 90 +++++++++++++++++++++------------------- js/extlib/json2.min.js | 1 + js/json2.min.js | 1 - lib/action.php | 4 +- 5 files changed, 52 insertions(+), 48 deletions(-) rename js/{ => extlib}/json2.js (87%) create mode 100644 js/extlib/json2.min.js delete mode 100644 js/json2.min.js diff --git a/js/Makefile b/js/Makefile index 2f3dfcdf70..817a25ee0d 100644 --- a/js/Makefile +++ b/js/Makefile @@ -1,6 +1,6 @@ .fake: all clean -TARGETS=util.min.js json2.min.js +TARGETS=util.min.js extlib/json2.min.js UTIL_SOURCES=util.js xbImportNode.js geometa.js all: $(TARGETS) @@ -11,5 +11,5 @@ clean: util.min.js: $(UTIL_SOURCES) cat $+ | yui-compressor --type js > $@ -json2.min.js: json2.js +extlib/json2.min.js: extlib/json2.js yui-compressor $+ > $@ diff --git a/js/json2.js b/js/extlib/json2.js similarity index 87% rename from js/json2.js rename to js/extlib/json2.js index 6bdea10e51..d89ecc7a2c 100644 --- a/js/json2.js +++ b/js/extlib/json2.js @@ -1,6 +1,6 @@ /* - http://www.JSON.org/json2.js - 2010-08-25 + json2.js + 2013-05-26 Public Domain. @@ -146,7 +146,7 @@ redistribute. */ -/*jslint evil: true, strict: false */ +/*jslint evil: true, regexp: true */ /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, @@ -159,11 +159,12 @@ // Create a JSON object only if one does not already exist. We create the // methods in a closure to avoid creating global variables. -if (!this.JSON) { - this.JSON = {}; +if (typeof JSON !== 'object') { + JSON = {}; } (function () { + 'use strict'; function f(n) { // Format integers to have at least two digits. @@ -172,22 +173,23 @@ if (!this.JSON) { if (typeof Date.prototype.toJSON !== 'function') { - Date.prototype.toJSON = function (key) { + Date.prototype.toJSON = function () { - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; + return isFinite(this.valueOf()) + ? this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' + : null; }; - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function () { + return this.valueOf(); + }; } var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, @@ -214,13 +216,12 @@ if (!this.JSON) { // sequences. escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' + ? c + : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; } @@ -303,11 +304,11 @@ if (!this.JSON) { // Join all of the elements together, separated with commas, and wrap them in // brackets. - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; + v = partial.length === 0 + ? '[]' + : gap + ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' + : '[' + partial.join(',') + ']'; gap = mind; return v; } @@ -317,8 +318,8 @@ if (!this.JSON) { if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { + if (typeof rep[i] === 'string') { + k = rep[i]; v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); @@ -330,7 +331,7 @@ if (!this.JSON) { // Otherwise, iterate through all of the keys in the object. for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { + if (Object.prototype.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); @@ -342,9 +343,11 @@ if (!this.JSON) { // Join all of the member texts together, separated with commas, // and wrap them in braces. - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; + v = partial.length === 0 + ? '{}' + : gap + ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' + : '{' + partial.join(',') + '}'; gap = mind; return v; } @@ -385,7 +388,7 @@ if (!this.JSON) { rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { + typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } @@ -415,7 +418,7 @@ if (!this.JSON) { var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { + if (Object.prototype.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; @@ -456,9 +459,9 @@ if (!this.JSON) { // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. if (/^[\],:{}\s]*$/ -.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') -.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') -.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity @@ -470,8 +473,9 @@ if (!this.JSON) { // In the optional fourth stage, we recursively walk the new structure, passing // each name/value pair to a reviver function for possible transformation. - return typeof reviver === 'function' ? - walk({'': j}, '') : j; + return typeof reviver === 'function' + ? walk({'': j}, '') + : j; } // If the text is not JSON parseable, then a SyntaxError is thrown. diff --git a/js/extlib/json2.min.js b/js/extlib/json2.min.js new file mode 100644 index 0000000000..ecb44b93d3 --- /dev/null +++ b/js/extlib/json2.min.js @@ -0,0 +1 @@ +if(typeof JSON!=="object"){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;iscript('jquery.form.min.js'); $this->script('jquery-ui.min.js'); $this->script('jquery.cookie.min.js'); - $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.min.js', StatusNet::isHTTPS()).'"); }'); + $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/extlib/json2.min.js', StatusNet::isHTTPS()).'"); }'); $this->script('jquery.joverlay.min.js'); $this->script('jquery.infieldlabel.min.js'); } else { @@ -371,7 +371,7 @@ class Action extends HTMLOutputter // lawsuit $this->script('jquery.form.js'); $this->script('jquery-ui.min.js'); $this->script('jquery.cookie.js'); - $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.js', StatusNet::isHTTPS()).'"); }'); + $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/extlib/json2.js', StatusNet::isHTTPS()).'"); }'); $this->script('jquery.joverlay.js'); $this->script('jquery.infieldlabel.js'); } -- 2.39.2