summaryrefslogtreecommitdiffstats
path: root/source4/scripting/libjs/encoder.js
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2008-05-28 08:11:05 +1000
committerAndrew Bartlett <abartlet@samba.org>2008-05-28 08:11:05 +1000
commit51ae2302a68033b1b79a4ebc8d4cbab64adcf843 (patch)
treed8b1af54efe4ec70607ef2bcbd873c2cd667d894 /source4/scripting/libjs/encoder.js
parent5d0d239d1ab826c91839a603f93d2c0061658888 (diff)
parent52b230141b5ad9f317f97e7d257703614bab3985 (diff)
downloadsamba-51ae2302a68033b1b79a4ebc8d4cbab64adcf843.tar.gz
samba-51ae2302a68033b1b79a4ebc8d4cbab64adcf843.tar.xz
samba-51ae2302a68033b1b79a4ebc8d4cbab64adcf843.zip
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-abartlet
It seems the format of main.mk changed in my sleep... Conflicts: source/main.mk (This used to be commit 56f2288e4f4f1aa70d11fc5f118458baf5803627)
Diffstat (limited to 'source4/scripting/libjs/encoder.js')
-rw-r--r--source4/scripting/libjs/encoder.js116
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);
-}