Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.json");
13
dojo.provide("dojo.json");
12
dojo.require("dojo.lang.func");
14
dojo.require("dojo.lang.func");
13
dojo.require("dojo.string.extras");
15
dojo.require("dojo.string.extras");
14
dojo.require("dojo.AdapterRegistry");
16
dojo.require("dojo.AdapterRegistry");
15
dojo.json = {jsonRegistry:new dojo.AdapterRegistry(), register:function (name, check, wrap, override) {
17
dojo.json = {jsonRegistry:new dojo.AdapterRegistry(), register:function (name, check, wrap, override) {
16
	dojo.json.jsonRegistry.register(name, check, wrap, override);
18
	dojo.json.jsonRegistry.register(name, check, wrap, override);
17
}, evalJson:function (json) {
19
}, evalJson:function (json) {
18
	try {
20
	try {
19
		return eval("(" + json + ")");
21
		return eval("(" + json + ")");
20
	}
22
	}
21
	catch (e) {
23
	catch (e) {
22
		dojo.debug(e);
24
		dojo.debug(e);
23
		return json;
25
		return json;
24
	}
26
	}
25
}, serialize:function (o) {
27
}, serialize:function (o) {
26
	var objtype = typeof (o);
28
	var objtype = typeof (o);
27
	if (objtype == "undefined") {
29
	if (objtype == "undefined") {
28
		return "undefined";
30
		return "undefined";
29
	} else {
31
	} else {
30
		if ((objtype == "number") || (objtype == "boolean")) {
32
		if ((objtype == "number") || (objtype == "boolean")) {
31
			return o + "";
33
			return o + "";
32
		} else {
34
		} else {
33
			if (o === null) {
35
			if (o === null) {
34
				return "null";
36
				return "null";
35
			}
37
			}
36
		}
38
		}
37
	}
39
	}
38
	if (objtype == "string") {
40
	if (objtype == "string") {
39
		return dojo.string.escapeString(o);
41
		return dojo.string.escapeString(o);
40
	}
42
	}
41
	var me = arguments.callee;
43
	var me = arguments.callee;
42
	var newObj;
44
	var newObj;
43
	if (typeof (o.__json__) == "function") {
45
	if (typeof (o.__json__) == "function") {
44
		newObj = o.__json__();
46
		newObj = o.__json__();
45
		if (o !== newObj) {
47
		if (o !== newObj) {
46
			return me(newObj);
48
			return me(newObj);
47
		}
49
		}
48
	}
50
	}
49
	if (typeof (o.json) == "function") {
51
	if (typeof (o.json) == "function") {
50
		newObj = o.json();
52
		newObj = o.json();
51
		if (o !== newObj) {
53
		if (o !== newObj) {
52
			return me(newObj);
54
			return me(newObj);
53
		}
55
		}
54
	}
56
	}
55
	if (objtype != "function" && typeof (o.length) == "number") {
57
	if (objtype != "function" && typeof (o.length) == "number") {
56
		var res = [];
58
		var res = [];
57
		for (var i = 0; i < o.length; i++) {
59
		for (var i = 0; i < o.length; i++) {
58
			var val = me(o[i]);
60
			var val = me(o[i]);
59
			if (typeof (val) != "string") {
61
			if (typeof (val) != "string") {
60
				val = "undefined";
62
				val = "undefined";
61
			}
63
			}
62
			res.push(val);
64
			res.push(val);
63
		}
65
		}
64
		return "[" + res.join(",") + "]";
66
		return "[" + res.join(",") + "]";
65
	}
67
	}
66
	try {
68
	try {
67
		window.o = o;
69
		window.o = o;
68
		newObj = dojo.json.jsonRegistry.match(o);
70
		newObj = dojo.json.jsonRegistry.match(o);
69
		return me(newObj);
71
		return me(newObj);
70
	}
72
	}
71
	catch (e) {
73
	catch (e) {
72
	}
74
	}
73
	if (objtype == "function") {
75
	if (objtype == "function") {
74
		return null;
76
		return null;
75
	}
77
	}
76
	res = [];
78
	res = [];
77
	for (var k in o) {
79
	for (var k in o) {
78
		var useKey;
80
		var useKey;
79
		if (typeof (k) == "number") {
81
		if (typeof (k) == "number") {
80
			useKey = "\"" + k + "\"";
82
			useKey = "\"" + k + "\"";
81
		} else {
83
		} else {
82
			if (typeof (k) == "string") {
84
			if (typeof (k) == "string") {
83
				useKey = dojo.string.escapeString(k);
85
				useKey = dojo.string.escapeString(k);
84
			} else {
86
			} else {
85
				continue;
87
				continue;
86
			}
88
			}
87
		}
89
		}
88
		val = me(o[k]);
90
		val = me(o[k]);
89
		if (typeof (val) != "string") {
91
		if (typeof (val) != "string") {
90
			continue;
92
			continue;
91
		}
93
		}
92
		res.push(useKey + ":" + val);
94
		res.push(useKey + ":" + val);
93
	}
95
	}
94
	return "{" + res.join(",") + "}";
96
	return "{" + res.join(",") + "}";
95
}};
97
}};
96
 
98