1 // in case we run on an implimentation that doesn't have "undefined";
4 function Cast (obj, class_constructor) {
6 if (eval(class_constructor + '["_isfieldmapper"]')) {
7 obj = eval("new " + class_constructor + "(obj)");
16 function JSON2js (json) {
18 json = String(json).replace( /\/\*--\s*S\w*?\s*?\s+\w+\s*--\*\//g, 'Cast(');
19 json = String(json).replace( /\/\*--\s*E\w*?\s*?\s+(\w+)\s*--\*\//g, ', "$1")');
24 eval( 'obj = ' + json );
26 debug("Error building JSON object with string " + E + "\nString:\n" + json );
34 function object2Array(obj) {
35 if( obj == null ) return null;
38 for( var i = 0; i < obj.length; i++ ) {
45 function js2JSON(arg) {
49 function _js2JSON(arg) {
57 if (arg._isfieldmapper) { /* magi-c-ast for fieldmapper objects */
59 if( arg.a.constructor != Array ) {
61 for( var i = 0; i < arg.a.length; i++ ) {
62 if( arg.a[i] == null ) {
63 arr[i] = null; continue;
66 if( typeof arg.a[i] != 'object' ) {
69 } else if( typeof arg.a[i] == 'object'
70 && arg.a[i]._isfieldmapper) {
75 arr[i] = object2Array(arg.a[i]);
81 return "/*--S " + arg.classname + " --*/" + js2JSON(arg.a) + "/*--E " + arg.classname + " --*/";
85 if (arg.constructor == Array) {
87 for (i = 0; i < arg.length; ++i) {
100 } else if (typeof arg.toString != 'undefined') {
108 o += js2JSON(i) + ':' + v;
132 return '"' + String(arg).replace(/(["\\])/g, '\\$1') + '"';