webgui/www/extras/yui-ext/docs/output/JSON.js.html
JT Smith cfd09a5cb6 upgraded to yui 0.12.0
upgraded to yui-ext 0.33 rc2
2006-11-28 02:23:34 +00:00

129 lines
No EOL
12 KiB
HTML

<html><head><title>JSON.js</title><link rel="stylesheet" type="text/css" href="../style.css" media="screen"/></head><body><div class="hl-main"><pre><span class="hl-comment">/**
* @class YAHOO.ext.util.JSON
* Modified version of Douglas Crockford's json.js that doesn't
* mess with the Object prototype
* </span><span class="hl-url">http://www.json.org/js.html</span><span class="hl-comment">
* @singleton
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">util</span><span class="hl-default">.</span><span class="hl-identifier">JSON</span><span class="hl-default"> = </span><span class="hl-reserved">new function</span><span class="hl-brackets">(){
</span><span class="hl-reserved">var </span><span class="hl-identifier">useHasOwn</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">.</span><span class="hl-identifier">hasOwnProperty</span><span class="hl-code"> ? </span><span class="hl-reserved">true</span><span class="hl-code"> : </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">validRE</span><span class="hl-code"> = </span><span class="hl-quotes">/</span><span class="hl-string">^(&quot;(\\.|[^&quot;\\\n\r])*?&quot;|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$</span><span class="hl-quotes">/</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">pad</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">n</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">n</span><span class="hl-code"> &lt; </span><span class="hl-number">10</span><span class="hl-code"> ? </span><span class="hl-quotes">'</span><span class="hl-string">0</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">n</span><span class="hl-code"> : </span><span class="hl-identifier">n</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">m</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-quotes">'</span><span class="hl-string">\b</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">b</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-string">\t</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">t</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-string">\n</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">n</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-string">\f</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">f</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-string">\r</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">r</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-string">&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> : </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">&quot;</span><span class="hl-quotes">'</span><span class="hl-code">,
</span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-quotes">'</span><span class="hl-special">\\\\</span><span class="hl-quotes">'
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">encodeString</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-brackets">){
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-quotes">/</span><span class="hl-string">[&quot;\\\x00-\x1f]</span><span class="hl-quotes">/</span><span class="hl-code">.</span><span class="hl-identifier">test</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">return </span><span class="hl-quotes">'</span><span class="hl-string">&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">s</span><span class="hl-code">.</span><span class="hl-identifier">replace</span><span class="hl-brackets">(</span><span class="hl-quotes">/</span><span class="hl-string">([\x00-\x1f\\&quot;])</span><span class="hl-quotes">/g</span><span class="hl-code">, </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">a</span><span class="hl-code">, </span><span class="hl-identifier">b</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">c</span><span class="hl-code"> = </span><span class="hl-identifier">m</span><span class="hl-brackets">[</span><span class="hl-identifier">b</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">c</span><span class="hl-brackets">){
</span><span class="hl-reserved">return </span><span class="hl-identifier">c</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">c</span><span class="hl-code"> = </span><span class="hl-identifier">b</span><span class="hl-code">.</span><span class="hl-identifier">charCodeAt</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-quotes">'</span><span class="hl-special">\\</span><span class="hl-string">u00</span><span class="hl-quotes">'</span><span class="hl-code"> +
</span><span class="hl-builtin">Math</span><span class="hl-code">.</span><span class="hl-identifier">floor</span><span class="hl-brackets">(</span><span class="hl-identifier">c </span><span class="hl-quotes">/</span><span class="hl-string"> 16).toString(16) +
(c % 16).toString(16);
}) + '&quot;';
}
return '&quot;' + s + '&quot;';
};
var encodeArray = function(o){
var a = ['['], b, i, l = o.length, v;
for (i = 0; i &lt; l; i += 1) {
v = o[i];
switch (typeof v) {
case 'undefined':
case 'function':
case 'unknown':
break;
default:
if (b) {
a.push(',');
}
a.push(v === null ? &quot;null&quot; : YAHOO.ext.util.JSON.encode(v));
b = true;
}
}
a.push(']');
return a.join('');
};
var encodeDate = function(o){
return '&quot;' + o.getFullYear() + '-' +
pad(o.getMonth() + 1) + '-' +
pad(o.getDate()) + 'T' +
pad(o.getHours()) + ':' +
pad(o.getMinutes()) + ':' +
pad(o.getSeconds()) + '&quot;';
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Encodes an Object</span><span class="hl-code">, </span><span class="hl-builtin">Array </span><span class="hl-identifier">or other value</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-identifier">Mixed</span><span class="hl-brackets">} </span><span class="hl-identifier">o The variable to encode</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">String</span><span class="hl-brackets">} </span><span class="hl-identifier">The JSON string</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
this.encode = function(o){
if(typeof o == 'undefined' || o === null){
return 'null';
}else if(o instanceof Array){
return encodeArray(o);
}else if(o instanceof Date){
return encodeDate(o);
}else if(typeof o == 'string'){
return encodeString(o);
}else if(typeof o == 'number'){
return isFinite(o) ? String(o) : &quot;null&quot;;
}else if(typeof o == 'boolean'){
return String(o);
}else {
var a = ['{'], b, i, v;
for (var i in o) {
if(!useHasOwn || o.hasOwnProperty(i)) {
v = o[i];
switch (typeof v) {
case 'undefined':
case 'function':
case 'unknown':
break;
default:
if(b){
a.push(',');
}
a.push(this.encode(i), ':',
v === null ? &quot;null&quot; : this.encode(v));
b = true;
}
}
}
a.push('}');
return a.join('');
}
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Decodes </span><span class="hl-brackets">(</span><span class="hl-identifier">parses</span><span class="hl-brackets">) </span><span class="hl-identifier">a JSON string to an object</span><span class="hl-code">. </span><span class="hl-identifier">If the JSON is invalid</span><span class="hl-code">, </span><span class="hl-reserved">this function throws </span><span class="hl-identifier">a SyntaxError</span><span class="hl-code">.
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">String</span><span class="hl-brackets">} </span><span class="hl-identifier">json The JSON string</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-identifier">Object</span><span class="hl-brackets">} </span><span class="hl-identifier">The resulting object</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
this.decode = function(json){
try{
if(validRE.test(json)) {
return eval('(' + json + ')');
}
}catch(e){
}
throw new SyntaxError(&quot;parseJSON&quot;);
};
}();</span></pre></div><hr>Copyright &copy; 2006 Jack Slocum. All rights reserved.</body></html>