diff options
Diffstat (limited to 'source4/scripting/libjs/encoder.js')
| -rw-r--r-- | source4/scripting/libjs/encoder.js | 116 | 
1 files changed, 0 insertions, 116 deletions
diff --git a/source4/scripting/libjs/encoder.js b/source4/scripting/libjs/encoder.js deleted file mode 100644 index 6cb780c00d..0000000000 --- a/source4/scripting/libjs/encoder.js +++ /dev/null @@ -1,116 +0,0 @@ -/* -	server side js functions for encoding/decoding objects into linear strings - -	Copyright Andrew Tridgell 2005 -	released under the GNU GPL Version 3 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;i<count;i++) { -		var name  = a[a.i]; a.i++; -		var type  = a[a.i]; a.i++; -		var value; -		if (type == 'object') { -			o[name] = decodeObjectArray(a); -		} else if (type == "string") { -			value = s.decodeURIComponent(__replace(a[a.i],'#','%')); a.i++; -			o[name] = value; -		} else if (type == "boolean") { -			value = a[a.i]; a.i++; -			if (value == 'true') { -				o[name] = true; -			} else { -				o[name] = false; -			} -		} else if (type == "undefined") { -			o[name] = undefined; -		} else if (type == "null") { -			o[name] = null; -		} else if (type == "number") { -			value = a[a.i]; a.i++; -			o[name] = value + 0; -		} else { -			println("Unable to delinearise type " + t); -			assert(t == "supported type"); -		} -	} -	return o; -} - -function decodeObject(str) { -	var s = string_init(); -	var a = s.split(':', str); -	a.i = 0; -	return decodeObjectArray(a); -}  | 
