/* server side js functions for encoding/decoding objects into linear strings Copyright Andrew Tridgell 2005 released under the GNU GPL Version 2 or later */ /* usage: enc = encodeObject(obj); obj = decodeObject(enc); The encoded format of the object is a string that is safe to use in URLs Note that only data elements are encoded, not functions */ function __count_members(o) { var i, count = 0; for (i in o) { count++; } if (o.length != undefined) { count++; } return count; } function __replace(str, old, rep) { var s = string_init(); var a = s.split(old, str); var j = s.join(rep, a); return s.join(rep, a); } function encodeElement(e, name) { var t = typeof(e); var r; var s = string_init(); if (t == 'object' && e == null) { t = 'null'; } if (t == 'object') { r = s.sprintf("%s:%s:%s", name, t, encodeObject(e)); } else if (t == "string") { var enc = s.encodeURIComponent(e); var rep = __replace(enc, '%', '#'); r = s.sprintf("%s:%s:%s:", name, t, __replace(s.encodeURIComponent(e),'%','#')); } else if (t == "boolean" || t == "number") { r = s.sprintf("%s:%s:%s:", name, t, "" + e); } else if (t == "undefined" || t == "null") { r = s.sprintf("%s:%s:", name, t); } else if (t == "pointer") { r = s.sprintf("%s:string:(POINTER):", name); } else { println("Unable to linearise type " + t); r = ""; } return r; } function encodeObject(o) { var s = string_init(); var i, r = s.sprintf("%u:", __count_members(o)); for (i in o) { r = r + encodeElement(o[i], i); } if (o.length != undefined) { r = r + encodeElement(o.length, 'length'); } return r; } function decodeObjectArray(a) { var s = string_init(); var o = new Object(); var i, count = a[a.i]; a.i++; for (i=0;istats
path: root/src/tests/intg/Makefile.am
blob: f30cc762c55307f71a5d9fa99a8fa9bf563457a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92