0
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 1
( function ( $ ){ function toIntegersAtLease ( n )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 2
{ return n < 10 ? '0' + n : n ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 3
Date . prototype . toJSON = function ( date )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 4
{ return date . getUTCFullYear () + '-' +
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 5
toIntegersAtLease ( date . getUTCMonth () + 1 ) + '-' +
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 6
toIntegersAtLease ( date . getUTCDate ());}; var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g ; var meta = { '\b' : '\\b' , '\t' : '\\t' , '\n' : '\\n' , '\f' : '\\f' , '\r' : '\\r' , '"' : '\\"' , '\\' : '\\\\' }
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 7
$ . quoteString = function ( string )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 8
{ if ( escapeable . test ( string ))
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 9
{ return '"' + string . replace ( escapeable , function ( a )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 10
{ var c = meta [ a ]; if ( typeof c === 'string' ){ return c ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 11
c = a . charCodeAt (); return '\\u00' + Math . floor ( c / 16 ). toString ( 16 ) + ( c % 16 ). toString ( 16 );}) + '"' }
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 12
return '"' + string + '"' ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 13
$ . toJSON = function ( o )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 14
{ var type = typeof ( o ); if ( type == "undefined" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 15
return "undefined" ; else if ( type == "number" || type == "boolean" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 16
return o + "" ; else if ( o === null )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 17
return "null" ; if ( type == "string" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 18
{ return $ . quoteString ( o );}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 19
if ( type == "object" && typeof o . toJSON == "function" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 20
return o . toJSON (); if ( type != "function" && typeof ( o . length ) == "number" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 21
{ var ret = []; for ( var i = 0 ; i < o . length ; i ++ ){ ret . push ( $ . toJSON ( o [ i ]));}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 22
return "[" + ret . join ( ", " ) + "]" ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 23
if ( type == "function" ){ throw new TypeError ( "Unable to convert object of type 'function' to json." );}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 24
ret = []; for ( var k in o ){ var name ; var type = typeof ( k ); if ( type == "number" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 25
name = '"' + k + '"' ; else if ( type == "string" )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 26
name = $ . quoteString ( k ); else
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 27
continue ; val = $ . toJSON ( o [ k ]); if ( typeof ( val ) != "string" ){ continue ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 28
ret . push ( name + ": " + val );}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 29
return "{" + ret . join ( ", " ) + "}" ;}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 30
$ . evalJSON = function ( src )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 31
{ return eval ( "(" + src + ")" );}
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 32
$ . secureEvalJSON = function ( src )
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 33
{ var filtered = src ; filtered = filtered . replace ( /\\["\\\/bfnrtu]/g , '@' ); filtered = filtered . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , ']' ); filtered = filtered . replace ( /(?:^|:|,)(?:\s*\[)+/g , '' ); if ( /^[\],:{}\s]*$/ . test ( filtered ))
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 34
return eval ( "(" + src + ")" ); else
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 35
throw new SyntaxError ( "Error parsing JSON, source is not valid." );}})( jQuery );