mirror of
https://github.com/YunoHost-Apps/limesurvey_ynh.git
synced 2024-09-03 19:36:32 +02:00
90 lines
No EOL
3 KiB
JavaScript
90 lines
No EOL
3 KiB
JavaScript
/*
|
|
* jQuery stringifyJSON
|
|
* http://github.com/flowersinthesand/jquery-stringifyJSON
|
|
*
|
|
* Copyright 2011, Donghwan Kim
|
|
* Licensed under the Apache License, Version 2.0
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*/
|
|
// This plugin is heavily based on Douglas Crockford's reference implementation
|
|
(function($) {
|
|
|
|
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
|
meta = {
|
|
'\b' : '\\b',
|
|
'\t' : '\\t',
|
|
'\n' : '\\n',
|
|
'\f' : '\\f',
|
|
'\r' : '\\r',
|
|
'"' : '\\"',
|
|
'\\' : '\\\\'
|
|
};
|
|
|
|
function quote(string) {
|
|
return '"' + string.replace(escapable, function(a) {
|
|
var c = meta[a];
|
|
return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
|
|
}) + '"';
|
|
}
|
|
|
|
function f(n) {
|
|
return n < 10 ? "0" + n : n;
|
|
}
|
|
|
|
function str(key, holder) {
|
|
var i, v, len, partial, value = holder[key], type = typeof value;
|
|
|
|
if (value && typeof value === "object" && typeof value.toJSON === "function") {
|
|
value = value.toJSON(key);
|
|
type = typeof value;
|
|
}
|
|
|
|
switch (type) {
|
|
case "string":
|
|
return quote(value);
|
|
case "number":
|
|
return isFinite(value) ? String(value) : "null";
|
|
case "boolean":
|
|
return String(value);
|
|
case "object":
|
|
if (!value) {
|
|
return "null";
|
|
}
|
|
|
|
switch (Object.prototype.toString.call(value)) {
|
|
case "[object Date]":
|
|
return isFinite(value.valueOf()) ? '"' + value.getUTCFullYear() + "-" + f(value.getUTCMonth() + 1) + "-" + f(value.getUTCDate()) + "T" +
|
|
f(value.getUTCHours()) + ":" + f(value.getUTCMinutes()) + ":" + f(value.getUTCSeconds()) + "Z" + '"' : "null";
|
|
case "[object Array]":
|
|
len = value.length;
|
|
partial = [];
|
|
for (i = 0; i < len; i++) {
|
|
partial.push(str(i, value) || "null");
|
|
}
|
|
|
|
return "[" + partial.join(",") + "]";
|
|
default:
|
|
partial = [];
|
|
for (i in value) {
|
|
if (Object.prototype.hasOwnProperty.call(value, i)) {
|
|
v = str(i, value);
|
|
if (v) {
|
|
partial.push(quote(i) + ":" + v);
|
|
}
|
|
}
|
|
}
|
|
|
|
return "{" + partial.join(",") + "}";
|
|
}
|
|
}
|
|
}
|
|
|
|
$.stringifyJSON = function(value) {
|
|
if (window.JSON && window.JSON.stringify) {
|
|
return window.JSON.stringify(value);
|
|
}
|
|
|
|
return str("", {"": value});
|
|
};
|
|
|
|
}(jQuery)); |