Changeset 3083
- Timestamp:
- 12/12/07 16:05:23 (5 years ago)
- Location:
- lang/javascript/jsruby/trunk
- Files:
-
- 1 added
- 3 modified
-
src/builtinobjects.js (modified) (2 diffs)
-
src/parse.js (modified) (2 diffs)
-
tests/jsobject.html (added)
-
testsuite.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/jsruby/trunk/src/builtinobjects.js
r3046 r3083 25 25 return undefined; 26 26 }; 27 RubyEngine.RubyObject.js2r = function(obj){ 28 if (obj==undefined) return obj; 29 if (obj==null) return obj; // TODO: 30 var clzname = Object.prototype.toString.call(obj); 31 if (clzname == "[object String]") { 32 return new RubyEngine.RubyObject.String(obj); // string 33 } else if (typeof(obj)=="object" && ("length" in obj)) { 34 // like array (including collection) 35 var ary = [] 36 for (var i=0;i<obj.length;i++) ary.push(RubyEngine.RubyObject.js2r(obj[i])); 37 return ary 38 } else if (clzname == "[object Number]") { 39 return new RubyEngine.RubyObject.Numeric(obj); // number 40 } else if (clzname == "[object Boolean]") { 41 return obj; // TODO: boolean 42 } else { 43 return new RubyEngine.RubyObject.JSObject(obj); // others 44 } 45 } 27 46 28 47 … … 194 213 "method_missing": function(self, args, block) { 195 214 if (args.length==1) { 196 return new RubyEngine.RubyObject.JSObject(self.obj[args[0].str]);215 return RubyEngine.RubyObject.js2r(self.obj[args[0].str]); 197 216 } else { 198 217 var jsargs = []; 199 218 for (var i=1;i<args.length;i++) jsargs.push( args[i].toValue() ); 200 return new RubyEngine.RubyObject.JSObject(self.obj[args[0].str].apply(self.obj, jsargs));219 return RubyEngine.RubyObject.js2r(self.obj[args[0].str].apply(self.obj, jsargs)); 201 220 } 202 221 } -
lang/javascript/jsruby/trunk/src/parse.js
r3082 r3083 147 147 var prim = this.primary2(); 148 148 while(prim != undefined) { 149 var y, z ;149 var y, z=null; 150 150 var prebody = this.body; 151 151 … … 203 203 // Args ( but only Method without arguments and block ) 204 204 var y; 205 if (RubyEngine.Node.Method.prototype.isPrototypeOf(prim) && prim.args==null && prim.block==undefined && (y=this.args())!=undefined) prim.args = y;205 if (RubyEngine.Node.Method.prototype.isPrototypeOf(prim) && prim.args==null && prim.block==undefined && (y=this.args())!=undefined) {console.log(y.toSource());prim.args = y;} 206 206 207 207 return prim; -
lang/javascript/jsruby/trunk/testsuite.html
r2864 r3083 13 13 newsuite.addTestPage('../tests/if.html'); 14 14 newsuite.addTestPage('../tests/range.html'); 15 newsuite.addTestPage('../tests/jsobject.html'); 15 16 return newsuite; 16 17 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)