]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/debian/missing-sources/framework/Web/Javascripts/source/tinymce-405/classes/util/JSON.js
baculum: Add missing-sources directory in debian metadata structure
[bacula/bacula] / gui / baculum / debian / missing-sources / framework / Web / Javascripts / source / tinymce-405 / classes / util / JSON.js
1 /**
2  * JSON.js
3  *
4  * Copyright, Moxiecode Systems AB
5  * Released under LGPL License.
6  *
7  * License: http://www.tinymce.com/license
8  * Contributing: http://www.tinymce.com/contributing
9  */
10
11 /**
12  * JSON parser and serializer class.
13  *
14  * @class tinymce.util.JSON
15  * @static
16  * @example
17  * // JSON parse a string into an object
18  * var obj = tinymce.util.JSON.parse(somestring);
19  *
20  * // JSON serialize a object into an string
21  * var str = tinymce.util.JSON.serialize(obj);
22  */
23 define("tinymce/util/JSON", [], function() {
24         function serialize(o, quote) {
25                 var i, v, t, name;
26
27                 quote = quote || '"';
28
29                 if (o === null) {
30                         return 'null';
31                 }
32
33                 t = typeof o;
34
35                 if (t == 'string') {
36                         v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
37
38                         return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
39                                 // Make sure single quotes never get encoded inside double quotes for JSON compatibility
40                                 if (quote === '"' && a === "'") {
41                                         return a;
42                                 }
43
44                                 i = v.indexOf(b);
45
46                                 if (i + 1) {
47                                         return '\\' + v.charAt(i + 1);
48                                 }
49
50                                 a = b.charCodeAt().toString(16);
51
52                                 return '\\u' + '0000'.substring(a.length) + a;
53                         }) + quote;
54                 }
55
56                 if (t == 'object') {
57                         if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
58                                         for (i=0, v = '['; i<o.length; i++) {
59                                                 v += (i > 0 ? ',' : '') + serialize(o[i], quote);
60                                         }
61
62                                         return v + ']';
63                                 }
64
65                                 v = '{';
66
67                                 for (name in o) {
68                                         if (o.hasOwnProperty(name)) {
69                                                 v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name +
70                                                         quote +':' + serialize(o[name], quote) : '';
71                                         }
72                                 }
73
74                                 return v + '}';
75                 }
76
77                 return '' + o;
78         }
79
80         return {
81                 /**
82                  * Serializes the specified object as a JSON string.
83                  *
84                  * @method serialize
85                  * @param {Object} obj Object to serialize as a JSON string.
86                  * @param {String} quote Optional quote string defaults to ".
87                  * @return {string} JSON string serialized from input.
88                  */
89                 serialize: serialize,
90
91                 /**
92                  * Unserializes/parses the specified JSON string into a object.
93                  *
94                  * @method parse
95                  * @param {string} s JSON String to parse into a JavaScript object.
96                  * @return {Object} Object from input JSON string or undefined if it failed.
97                  */
98                 parse: function(text) {
99                         try {
100                                 // Trick uglify JS
101                                 return window[String.fromCharCode(101) + 'val']('(' + text + ')');
102                         } catch (ex) {
103                                 // Ignore
104                         }
105                 }
106
107                 /**#@-*/
108         };
109 });