Changeset 2328

Show
Ignore:
Timestamp:
12/03/07 11:30:58 (5 years ago)
Author:
nshuyo
Message:

lang/javascript/jsruby: added power operator supported

Location:
lang/javascript/jsruby/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/jsruby/trunk/src/builtinobjects.js

    r2314 r2328  
    4646RubyEngine.RubyObject.Numeric.prototype.div = function(x){ return new RubyEngine.RubyObject.Numeric(parseInt(this.num / x.num)); } 
    4747RubyEngine.RubyObject.Numeric.prototype.mod = function(x){ return new RubyEngine.RubyObject.Numeric(this.num % x.num); } 
     48RubyEngine.RubyObject.Numeric.prototype.pow = function(x){ return new RubyEngine.RubyObject.Numeric(Math.pow(this.num, x.num)); } 
    4849RubyEngine.RubyObject.Numeric.prototype.eql = function(x){ return this.num == x.num; } 
    4950RubyEngine.RubyObject.Numeric.methods = { 
  • lang/javascript/jsruby/trunk/src/interpreter.js

    r2174 r2328  
    8585                                stk.push(stk.pop().mod(a)); 
    8686                                break; 
     87                        case "**": 
     88                                var a = stk.pop(); 
     89                                stk.push(stk.pop().pow(a)); 
     90                                break; 
    8791                        case "..": 
    8892                                var to = stk.pop(); 
  • lang/javascript/jsruby/trunk/src/parse.js

    r2313 r2328  
    294294 
    295295RubyEngine.Parser.prototype.operator = function() { 
    296         if (this.body.match(/^[ \t]*(\.\.|\+|\-|\*|\/|%|==)/)) { 
     296        if (this.body.match(/^[ \t]*(\.\.|\+|\-|\*{1,2}|\/|%|==|[<>]=?|&&|\|\||<<|>>)/)) { 
    297297                this.body = RegExp.rightContext; 
    298298                return new RubyEngine.Node.Operator(RegExp.$1); 
  • lang/javascript/jsruby/trunk/tests/integer.html

    r2314 r2328  
    4545        assertEquals("calc 3", ruby.exec("3-4"), -1); 
    4646        assertEquals("calc 4", ruby.exec("3/4"), 0); 
    47         //assertEquals("calc 5", ruby.exec("3**4"), 81); 
     47        assertEquals("calc 5", ruby.exec("3**4"), 81); 
    4848        assertFalse("calc 6", ruby.exec("3==4") ); 
    4949        assertTrue("calc 7", ruby.exec("4==4") ); 
  • lang/javascript/jsruby/trunk/tests/string.html

    r2184 r2328  
    2424} 
    2525 
     26function testAdd() { 
     27        assertEquals("string add 1", ruby.exec(" 'a'+'b' "), "ab"); 
     28        assertEquals("string add 2", ruby.exec(" 'd'+'e'+'f' "), "def"); 
     29        assertEquals("string add 3", ruby.exec(" x='u'+'b'; \"r\"+x+\"y\" "), "ruby"); 
     30} 
     31 
    2632function testReverse() { 
    2733        assertEquals("reverse 1", ruby.exec(' "a".reverse '), "a");