1 // in case we run on an implimentation that doesn't have "undefined";
4 function Cast (obj, class_constructor) {
6 if (eval(class_constructor + '.prototype["class_name"]')) {
7 var template = eval("new " + class_constructor + "()");
8 // copy the methods over to 'obj'
10 if (typeof(obj[m]) != 'undefined') {
17 obj['class_name'] = function () { return class_constructor };
18 //dump( super_dump(E) + "\n");
24 function JSON2js (json) {
25 json = json.replace( /\/\*--\s*S\w*?\s*?\s+\w+\s*--\*\//g, 'Cast(');
26 json = json.replace( /\/\*--\s*E\w*?\s*?\s+(\w+)\s*--\*\//g, ', "$1")');
29 eval( 'obj = ' + json );
31 obj.toString = function () { return js2JSON(this) };
35 function js2JSON(arg) {
41 if (arg.constructor == Array) {
43 for (i = 0; i < arg.length; ++i) {
55 } else if (typeof arg.toString != 'undefined') {
63 o += js2JSON(i) + ':' + v;
69 if ( arg.class_name() ) {
70 obj_start = '/*--S ' + arg.class_name() + '--*/{';
71 obj_end = '}/*--E ' + arg.class_name() + '--*/';
74 o = obj_start + o + obj_end;
89 return '"' + String(arg).replace(/(["\\])/g, '\\$1') + '"';