[Opensrf-commits] r1110 - in trunk:
examples/math_xul_client/math/content src/javascript
svn at svn.open-ils.org
svn at svn.open-ils.org
Wed Oct 17 23:21:28 EDT 2007
Author: dbs
Date: 2007-10-17 23:08:38 -0400 (Wed, 17 Oct 2007)
New Revision: 1110
Added:
trunk/src/javascript/JSON_v0.js
trunk/src/javascript/JSON_v1.js
Removed:
trunk/src/javascript/JSON.js
trunk/src/javascript/JSON_wrapper.js
Modified:
trunk/examples/math_xul_client/math/content/math.xul
Log:
Deliberately break applications relying on pre-OpenSRF 1.0 behaviour.
JSON_v0.js represents "legacy" JSON format, while JSON_v1.js represents "modern" JSON format.
Modified: trunk/examples/math_xul_client/math/content/math.xul
===================================================================
--- trunk/examples/math_xul_client/math/content/math.xul 2007-10-18 02:38:51 UTC (rev 1109)
+++ trunk/examples/math_xul_client/math/content/math.xul 2007-10-18 03:08:38 UTC (rev 1110)
@@ -16,7 +16,7 @@
<!-- OpenSRF -->
<script>var myPackageDir = "math";</script>
- <script src="OpenSRF/JSON.js" />
+ <script src="OpenSRF/JSON_v1.js" />
<script src="OpenSRF/md5.js" />
<script src="OpenSRF/opensrf_utils.js" />
<script src="OpenSRF/opensrf_config.js" />
Deleted: trunk/src/javascript/JSON.js
===================================================================
--- trunk/src/javascript/JSON.js 2007-10-18 02:38:51 UTC (rev 1109)
+++ trunk/src/javascript/JSON.js 2007-10-18 03:08:38 UTC (rev 1110)
@@ -1,135 +0,0 @@
-// in case we run on an implimentation that doesn't have "undefined";
-var undefined;
-
-function Cast (obj, class_constructor) {
- try {
- if (eval(class_constructor + '["_isfieldmapper"]')) {
- obj = eval("new " + class_constructor + "(obj)");
- }
- } catch( E ) {
- alert( E + "\n");
- } finally {
- return obj;
- }
-}
-
-function JSON2js (json) {
-
- json = String(json).replace( /\/\*--\s*S\w*?\s*?\s+\w+\s*--\*\//g, 'Cast(');
- json = String(json).replace( /\/\*--\s*E\w*?\s*?\s+(\w+)\s*--\*\//g, ', "$1")');
-
- var obj;
- if (json != '') {
- try {
- eval( 'obj = ' + json );
- } catch(E) {
- debug("Error building JSON object with string " + E + "\nString:\n" + json );
- return null;
- }
- }
- return obj;
-}
-
-
-function object2Array(obj) {
- if( obj == null ) return null;
-
- var arr = new Array();
- for( var i = 0; i < obj.length; i++ ) {
- arr[i] = obj[i];
- }
- return arr;
-}
-
-
-function js2JSON(arg) {
- return _js2JSON(arg);
-}
-
-function _js2JSON(arg) {
- var i, o, u, v;
-
- switch (typeof arg) {
- case 'object':
-
- if(arg) {
-
- if (arg._isfieldmapper) { /* magi-c-ast for fieldmapper objects */
-
- if( arg.a.constructor != Array ) {
- var arr = new Array();
- for( var i = 0; i < arg.a.length; i++ ) {
- if( arg.a[i] == null ) {
- arr[i] = null; continue;
- }
-
- if( typeof arg.a[i] != 'object' ) {
- arr[i] = arg.a[i];
-
- } else if( typeof arg.a[i] == 'object'
- && arg.a[i]._isfieldmapper) {
-
- arr[i] = arg.a[i];
-
- } else {
- arr[i] = object2Array(arg.a[i]);
- }
- }
- arg.a = arr;
- }
-
- return "/*--S " + arg.classname + " --*/" + js2JSON(arg.a) + "/*--E " + arg.classname + " --*/";
-
- } else {
-
- if (arg.constructor == Array) {
- o = '';
- for (i = 0; i < arg.length; ++i) {
- v = js2JSON(arg[i]);
- if (o) {
- o += ',';
- }
- if (v !== u) {
- o += v;
- } else {
- o += 'null';
- }
- }
- return '[' + o + ']';
-
- } else if (typeof arg.toString != 'undefined') {
- o = '';
- for (i in arg) {
- v = js2JSON(arg[i]);
- if (v !== u) {
- if (o) {
- o += ',';
- }
- o += js2JSON(i) + ':' + v;
- }
- }
-
- o = '{' + o + '}';
- return o;
-
- } else {
- return;
- }
- }
- }
- return 'null';
-
- case 'unknown':
- case 'number':
- return arg;
-
- case 'undefined':
- case 'function':
- return u;
-
- case 'string':
- default:
- return '"' + String(arg).replace(/(["\\])/g, '\\$1') + '"';
- }
-
-}
Copied: trunk/src/javascript/JSON_v0.js (from rev 1106, trunk/src/javascript/JSON.js)
===================================================================
--- trunk/src/javascript/JSON_v0.js (rev 0)
+++ trunk/src/javascript/JSON_v0.js 2007-10-18 03:08:38 UTC (rev 1110)
@@ -0,0 +1,135 @@
+// in case we run on an implimentation that doesn't have "undefined";
+var undefined;
+
+function Cast (obj, class_constructor) {
+ try {
+ if (eval(class_constructor + '["_isfieldmapper"]')) {
+ obj = eval("new " + class_constructor + "(obj)");
+ }
+ } catch( E ) {
+ alert( E + "\n");
+ } finally {
+ return obj;
+ }
+}
+
+function JSON2js (json) {
+
+ json = String(json).replace( /\/\*--\s*S\w*?\s*?\s+\w+\s*--\*\//g, 'Cast(');
+ json = String(json).replace( /\/\*--\s*E\w*?\s*?\s+(\w+)\s*--\*\//g, ', "$1")');
+
+ var obj;
+ if (json != '') {
+ try {
+ eval( 'obj = ' + json );
+ } catch(E) {
+ debug("Error building JSON object with string " + E + "\nString:\n" + json );
+ return null;
+ }
+ }
+ return obj;
+}
+
+
+function object2Array(obj) {
+ if( obj == null ) return null;
+
+ var arr = new Array();
+ for( var i = 0; i < obj.length; i++ ) {
+ arr[i] = obj[i];
+ }
+ return arr;
+}
+
+
+function js2JSON(arg) {
+ return _js2JSON(arg);
+}
+
+function _js2JSON(arg) {
+ var i, o, u, v;
+
+ switch (typeof arg) {
+ case 'object':
+
+ if(arg) {
+
+ if (arg._isfieldmapper) { /* magi-c-ast for fieldmapper objects */
+
+ if( arg.a.constructor != Array ) {
+ var arr = new Array();
+ for( var i = 0; i < arg.a.length; i++ ) {
+ if( arg.a[i] == null ) {
+ arr[i] = null; continue;
+ }
+
+ if( typeof arg.a[i] != 'object' ) {
+ arr[i] = arg.a[i];
+
+ } else if( typeof arg.a[i] == 'object'
+ && arg.a[i]._isfieldmapper) {
+
+ arr[i] = arg.a[i];
+
+ } else {
+ arr[i] = object2Array(arg.a[i]);
+ }
+ }
+ arg.a = arr;
+ }
+
+ return "/*--S " + arg.classname + " --*/" + js2JSON(arg.a) + "/*--E " + arg.classname + " --*/";
+
+ } else {
+
+ if (arg.constructor == Array) {
+ o = '';
+ for (i = 0; i < arg.length; ++i) {
+ v = js2JSON(arg[i]);
+ if (o) {
+ o += ',';
+ }
+ if (v !== u) {
+ o += v;
+ } else {
+ o += 'null';
+ }
+ }
+ return '[' + o + ']';
+
+ } else if (typeof arg.toString != 'undefined') {
+ o = '';
+ for (i in arg) {
+ v = js2JSON(arg[i]);
+ if (v !== u) {
+ if (o) {
+ o += ',';
+ }
+ o += js2JSON(i) + ':' + v;
+ }
+ }
+
+ o = '{' + o + '}';
+ return o;
+
+ } else {
+ return;
+ }
+ }
+ }
+ return 'null';
+
+ case 'unknown':
+ case 'number':
+ return arg;
+
+ case 'undefined':
+ case 'function':
+ return u;
+
+ case 'string':
+ default:
+ return '"' + String(arg).replace(/(["\\])/g, '\\$1') + '"';
+ }
+
+}
Copied: trunk/src/javascript/JSON_v1.js (from rev 1106, trunk/src/javascript/JSON_wrapper.js)
===================================================================
--- trunk/src/javascript/JSON_v1.js (rev 0)
+++ trunk/src/javascript/JSON_v1.js 2007-10-18 03:08:38 UTC (rev 1110)
@@ -0,0 +1,201 @@
+var JSON_CLASS_KEY = '__c';
+var JSON_DATA_KEY = '__p';
+
+
+
+function JSON_version() { return 'wrapper' }
+
+function JSON2js(text) {
+ return decodeJS(JSON2jsRaw(text));
+}
+
+function JSON2jsRaw(text) {
+ var obj;
+ eval('obj = ' + text);
+ return obj;
+}
+
+
+/* iterates over object, arrays, or fieldmapper objects */
+function jsIterate( arg, callback ) {
+ if( arg && typeof arg == 'object' ) {
+ if( arg.constructor == Array ) {
+ for( var i = 0; i < arg.length; i++ )
+ callback(arg, i);
+
+ } else if( arg.constructor == Object ) {
+ for( var i in arg )
+ callback(arg, i);
+
+ } else if( arg._isfieldmapper && arg.a ) {
+ for( var i = 0; i < arg.a.length; i++ )
+ callback(arg.a, i);
+ }
+ }
+}
+
+
+/* removes the class/paylod wrapper objects */
+function decodeJS(arg) {
+
+ if(arg == null) return null;
+
+ if( arg && typeof arg == 'object' &&
+ arg.constructor == Object &&
+ arg[JSON_CLASS_KEY] ) {
+ eval('arg = new ' + arg[JSON_CLASS_KEY] + '(arg[JSON_DATA_KEY])');
+ }
+
+ jsIterate( arg,
+ function(o, i) {
+ o[i] = decodeJS(o[i]);
+ }
+ );
+
+ return arg;
+}
+
+
+function jsClone(obj) {
+ if( obj == null ) return null;
+ if( typeof obj != 'object' ) return obj;
+
+ var newobj;
+ if (obj.constructor == Array) {
+ newobj = [];
+ for( var i = 0; i < obj.length; i++ )
+ newobj[i] = jsClone(obj[i]);
+
+ } else if( obj.constructor == Object ) {
+ newobj = {};
+ for( var i in obj )
+ newobj[i] = jsClone(obj[i]);
+
+ } else if( obj._isfieldmapper && obj.a ) {
+ eval('newobj = new '+obj.classname + '();');
+ for( var i = 0; i < obj.a.length; i++ )
+ newobj.a[i] = jsClone(obj.a[i]);
+ }
+
+ return newobj;
+}
+
+
+/* adds the class/paylod wrapper objects */
+function encodeJS(arg) {
+ if( arg == null ) return null;
+ if( typeof arg != 'object' ) return arg;
+
+ if( arg._isfieldmapper ) {
+ var newarr = []
+ if(!arg.a) arg.a = [];
+ for( var i = 0; i < arg.a.length; i++ )
+ newarr[i] = encodeJS(arg.a[i]);
+
+ var a = {};
+ a[JSON_CLASS_KEY] = arg.classname;
+ a[JSON_DATA_KEY] = newarr;
+ return a;
+ }
+
+ var newobj;
+
+ if(arg.length != undefined) {
+ newobj = [];
+ for( var i = 0; i < arg.length; i++ )
+ newobj.push(encodeJS(arg[i]));
+ return newobj;
+ }
+
+ newobj = {};
+ for( var i in arg )
+ newobj[i] = encodeJS(arg[i]);
+ return newobj;
+}
+
+/* turns a javascript object into a JSON string */
+function js2JSON(arg) {
+ return js2JSONRaw(encodeJS(arg));
+}
+
+function js2JSONRaw(arg) {
+
+ if( arg == null )
+ return 'null';
+
+ var o;
+
+ switch (typeof arg) {
+
+ case 'object':
+
+ if (arg.constructor == Array) {
+ o = '';
+ jsIterate( arg,
+ function(obj, i) {
+ if (o) o += ',';
+ o += js2JSONRaw(obj[i]);
+ }
+ );
+ return '[' + o + ']';
+
+ } else if (typeof arg.toString != 'undefined') {
+ o = '';
+ jsIterate( arg,
+ function(obj, i) {
+ if (o) o += ',';
+ o = o + js2JSONRaw(i) + ':' + js2JSONRaw(obj[i]);
+ }
+ );
+ return '{' + o + '}';
+
+ } else {
+ return 'null';
+ }
+
+ case 'number': return arg;
+
+ case 'string':
+ var s = String(arg);
+ s = s.replace(/\\/g, '\\\\');
+ s = s.replace(/"/g, '\\"');
+ s = s.replace(/\t/g, "\\t");
+ s = s.replace(/\n/g, "\\n");
+ s = s.replace(/\r/g, "\\r");
+ s = s.replace(/\f/g, "\\f");
+ return '"' + s + '"';
+
+ default: return 'null';
+ }
+}
+
+
+function __tabs(c) {
+ var s = '';
+ for( i = 0; i < c; i++ ) s += '\t';
+ return s;
+}
+
+function jsonPretty(str) {
+ if(!str) return "";
+ var s = '';
+ var d = 0;
+ for( var i = 0; i < str.length; i++ ) {
+ var c = str.charAt(i);
+ if( c == '{' || c == '[' ) {
+ s += c + '\n' + __tabs(++d);
+ } else if( c == '}' || c == ']' ) {
+ s += '\n' + __tabs(--d) + '\n';
+ if( str.charAt(i+1) == ',' ) {
+ s += '\n' + __tabs(d);
+ }
+ } else if( c == ',' ) {
+ s += ',\n' + __tabs(d);
+ } else {
+ s += c;
+ }
+ }
+ return s;
+}
+
+
Deleted: trunk/src/javascript/JSON_wrapper.js
===================================================================
--- trunk/src/javascript/JSON_wrapper.js 2007-10-18 02:38:51 UTC (rev 1109)
+++ trunk/src/javascript/JSON_wrapper.js 2007-10-18 03:08:38 UTC (rev 1110)
@@ -1,201 +0,0 @@
-var JSON_CLASS_KEY = '__c';
-var JSON_DATA_KEY = '__p';
-
-
-
-function JSON_version() { return 'wrapper' }
-
-function JSON2js(text) {
- return decodeJS(JSON2jsRaw(text));
-}
-
-function JSON2jsRaw(text) {
- var obj;
- eval('obj = ' + text);
- return obj;
-}
-
-
-/* iterates over object, arrays, or fieldmapper objects */
-function jsIterate( arg, callback ) {
- if( arg && typeof arg == 'object' ) {
- if( arg.constructor == Array ) {
- for( var i = 0; i < arg.length; i++ )
- callback(arg, i);
-
- } else if( arg.constructor == Object ) {
- for( var i in arg )
- callback(arg, i);
-
- } else if( arg._isfieldmapper && arg.a ) {
- for( var i = 0; i < arg.a.length; i++ )
- callback(arg.a, i);
- }
- }
-}
-
-
-/* removes the class/paylod wrapper objects */
-function decodeJS(arg) {
-
- if(arg == null) return null;
-
- if( arg && typeof arg == 'object' &&
- arg.constructor == Object &&
- arg[JSON_CLASS_KEY] ) {
- eval('arg = new ' + arg[JSON_CLASS_KEY] + '(arg[JSON_DATA_KEY])');
- }
-
- jsIterate( arg,
- function(o, i) {
- o[i] = decodeJS(o[i]);
- }
- );
-
- return arg;
-}
-
-
-function jsClone(obj) {
- if( obj == null ) return null;
- if( typeof obj != 'object' ) return obj;
-
- var newobj;
- if (obj.constructor == Array) {
- newobj = [];
- for( var i = 0; i < obj.length; i++ )
- newobj[i] = jsClone(obj[i]);
-
- } else if( obj.constructor == Object ) {
- newobj = {};
- for( var i in obj )
- newobj[i] = jsClone(obj[i]);
-
- } else if( obj._isfieldmapper && obj.a ) {
- eval('newobj = new '+obj.classname + '();');
- for( var i = 0; i < obj.a.length; i++ )
- newobj.a[i] = jsClone(obj.a[i]);
- }
-
- return newobj;
-}
-
-
-/* adds the class/paylod wrapper objects */
-function encodeJS(arg) {
- if( arg == null ) return null;
- if( typeof arg != 'object' ) return arg;
-
- if( arg._isfieldmapper ) {
- var newarr = []
- if(!arg.a) arg.a = [];
- for( var i = 0; i < arg.a.length; i++ )
- newarr[i] = encodeJS(arg.a[i]);
-
- var a = {};
- a[JSON_CLASS_KEY] = arg.classname;
- a[JSON_DATA_KEY] = newarr;
- return a;
- }
-
- var newobj;
-
- if(arg.length != undefined) {
- newobj = [];
- for( var i = 0; i < arg.length; i++ )
- newobj.push(encodeJS(arg[i]));
- return newobj;
- }
-
- newobj = {};
- for( var i in arg )
- newobj[i] = encodeJS(arg[i]);
- return newobj;
-}
-
-/* turns a javascript object into a JSON string */
-function js2JSON(arg) {
- return js2JSONRaw(encodeJS(arg));
-}
-
-function js2JSONRaw(arg) {
-
- if( arg == null )
- return 'null';
-
- var o;
-
- switch (typeof arg) {
-
- case 'object':
-
- if (arg.constructor == Array) {
- o = '';
- jsIterate( arg,
- function(obj, i) {
- if (o) o += ',';
- o += js2JSONRaw(obj[i]);
- }
- );
- return '[' + o + ']';
-
- } else if (typeof arg.toString != 'undefined') {
- o = '';
- jsIterate( arg,
- function(obj, i) {
- if (o) o += ',';
- o = o + js2JSONRaw(i) + ':' + js2JSONRaw(obj[i]);
- }
- );
- return '{' + o + '}';
-
- } else {
- return 'null';
- }
-
- case 'number': return arg;
-
- case 'string':
- var s = String(arg);
- s = s.replace(/\\/g, '\\\\');
- s = s.replace(/"/g, '\\"');
- s = s.replace(/\t/g, "\\t");
- s = s.replace(/\n/g, "\\n");
- s = s.replace(/\r/g, "\\r");
- s = s.replace(/\f/g, "\\f");
- return '"' + s + '"';
-
- default: return 'null';
- }
-}
-
-
-function __tabs(c) {
- var s = '';
- for( i = 0; i < c; i++ ) s += '\t';
- return s;
-}
-
-function jsonPretty(str) {
- if(!str) return "";
- var s = '';
- var d = 0;
- for( var i = 0; i < str.length; i++ ) {
- var c = str.charAt(i);
- if( c == '{' || c == '[' ) {
- s += c + '\n' + __tabs(++d);
- } else if( c == '}' || c == ']' ) {
- s += '\n' + __tabs(--d) + '\n';
- if( str.charAt(i+1) == ',' ) {
- s += '\n' + __tabs(d);
- }
- } else if( c == ',' ) {
- s += ',\n' + __tabs(d);
- } else {
- s += c;
- }
- }
- return s;
-}
-
-
More information about the opensrf-commits
mailing list