Show
Ignore:
Timestamp:
12/03/07 00:58:09 (6 years ago)
Author:
tokuhirom
Message:

lang/ruby/javascript: support more literal type :)

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

Legend:

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

    r2308 r2310  
    202202                this.body = prebody; 
    203203        } 
    204         if (this.body.match(/^[ \t]*(0x[0-9A-Fa-f]+|0b([01]+)|[0-9]+)/)) { 
     204        if (this.body.match(/^[ \t]*(0x[0-9A-F]+|0b([01]+)|0o?[0-7]+|(?:0d)?[0-9]+)/i)) { 
    205205                this.body = RegExp.rightContext; 
    206206    var i; 
     
    208208                  i = parseInt(RegExp.$2, 2); 
    209209    } else { 
    210                   i = parseInt(RegExp.$1); 
     210                  i = parseInt(RegExp.$1.replace(/^0d/i, '').replace(/^0o/i, '0')); 
    211211    } 
    212212                return new RubyEngine.RubyObject.Numeric(i); 
  • lang/javascript/jsruby/trunk/tests/integer.html

    r2308 r2310  
    1818function testLiteral() { 
    1919        assertEquals("hex", ruby.exec("0xfc84"),  64644); 
     20        assertEquals("hex", ruby.exec("0XFC84"),  64644); 
     21 
    2022        assertEquals("dec", ruby.exec("52525"),  52525); 
     23        assertEquals("dec", ruby.exec("0d52525"),  52525); 
     24        assertEquals("dec", ruby.exec("0D52525"),  52525); 
     25 
    2126        assertEquals("oct", ruby.exec("0744"),  484); 
     27        assertEquals("oct", ruby.exec("0o744"),  484); 
     28        assertEquals("oct", ruby.exec("0O744"),  484); 
     29 
    2230        assertEquals("bin", ruby.exec("0b01101001"),  105); 
     31        assertEquals("bin", ruby.exec("0B01101001"),  105); 
    2332} 
    2433