rVM 0.0.14 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +4 -4
 - data/bin/rvm +229 -0
 - data/lib/rvm.rb +6 -6
 - data/lib/rvm/acts_as_rvm_type.rb +26 -3
 - data/lib/rvm/classes.rb +9 -15
 - data/lib/rvm/classes/block.rb +8 -3
 - data/lib/rvm/classes/class.rb +2 -2
 - data/lib/rvm/classes/list.rb +1 -1
 - data/lib/rvm/classes/null.rb +31 -0
 - data/lib/rvm/classes/number.rb +4 -0
 - data/lib/rvm/classes/object.rb +1 -1
 - data/lib/rvm/classes/string.rb +6 -1
 - data/lib/rvm/environment.rb +256 -0
 - data/lib/rvm/functions.rb +9 -4
 - data/lib/rvm/functions/array.rb +26 -2
 - data/lib/rvm/functions/array/append.rb +31 -1
 - data/lib/rvm/functions/array/at.rb +29 -1
 - data/lib/rvm/functions/array/set_at.rb +29 -0
 - data/lib/rvm/functions/association/assoc_get.rb +34 -0
 - data/lib/rvm/functions/association/assoc_set.rb +32 -0
 - data/lib/rvm/functions/bitwise.rb +3 -0
 - data/lib/rvm/functions/bitwise/bitwise_and.rb +41 -0
 - data/lib/rvm/functions/bitwise/bitwise_or.rb +41 -0
 - data/lib/rvm/functions/bitwise/bitwise_xor.rb +41 -0
 - data/lib/rvm/functions/collection/get.rb +37 -4
 - data/lib/rvm/functions/collection/set.rb +37 -3
 - data/lib/rvm/functions/collection/size.rb +33 -1
 - data/lib/rvm/functions/general/cmp.rb +35 -7
 - data/lib/rvm/functions/general/eq.rb +29 -0
 - data/lib/rvm/functions/general/gt.rb +29 -0
 - data/lib/rvm/functions/general/gte.rb +29 -0
 - data/lib/rvm/functions/general/lt.rb +29 -0
 - data/lib/rvm/functions/general/lte.rb +29 -0
 - data/lib/rvm/functions/general/neq.rb +5 -0
 - data/lib/rvm/functions/io/print.rb +38 -8
 - data/lib/rvm/functions/list/align.rb +25 -1
 - data/lib/rvm/functions/list/join.rb +27 -0
 - data/lib/rvm/functions/list/map.rb +34 -0
 - data/lib/rvm/functions/list/split.rb +31 -0
 - data/lib/rvm/functions/logic/and.rb +36 -2
 - data/lib/rvm/functions/logic/not.rb +27 -0
 - data/lib/rvm/functions/logic/or.rb +32 -2
 - data/lib/rvm/functions/math/add.rb +25 -0
 - data/lib/rvm/functions/math/cos.rb +39 -0
 - data/lib/rvm/functions/math/div.rb +25 -0
 - data/lib/rvm/functions/math/mod.rb +41 -0
 - data/lib/rvm/functions/math/mul.rb +25 -0
 - data/lib/rvm/functions/math/neg.rb +25 -0
 - data/lib/rvm/functions/math/power.rb +25 -0
 - data/lib/rvm/functions/math/shl.rb +41 -0
 - data/lib/rvm/functions/math/shr.rb +41 -0
 - data/lib/rvm/functions/math/sin.rb +39 -0
 - data/lib/rvm/functions/math/sub.rb +25 -0
 - data/lib/rvm/functions/math/tan.rb +39 -0
 - data/lib/rvm/functions/rails/print.rb +33 -3
 - data/lib/rvm/interpreter.rb +405 -272
 - data/lib/rvm/languages.rb +45 -11
 - data/lib/rvm/languages/brainfuck.rb +15 -16
 - data/lib/rvm/languages/ecma.rb +4 -1257
 - data/lib/rvm/languages/ecma/compiler.rb +1353 -0
 - data/lib/rvm/languages/ecma/core-math.js +84 -0
 - data/lib/rvm/languages/math.rb +9 -16
 - data/lib/rvm/languages/math/compiler.rb +9 -9
 - data/lib/rvm/languages/math/tokenizer.rb +1 -1
 - data/lib/rvm/languages/math/tree.rb +14 -14
 - data/lib/rvm/library.rb +26 -18
 - data/lib/rvm/optimisation.rb +109 -0
 - data/lib/rvm/plugin.rb +109 -45
 - data/lib/rvm/rails.rb +79 -54
 - data/spec/classes/atom/association_spec.rb +8 -8
 - data/spec/classes/atom/block_spec.rb +8 -5
 - data/spec/classes/atom/boolean_spec.rb +1 -1
 - data/spec/classes/atom/error_spec.rb +1 -1
 - data/spec/classes/atom/list_spec.rb +1 -1
 - data/spec/classes/atom/number_spec.rb +2 -2
 - data/spec/classes/atom/string_spec.rb +1 -1
 - data/spec/languages/ecma/ecma_spec.rb +94 -38
 - data/spec/languages/ecma/json_spec.rb +4 -4
 - data/spec/languages/math/compiler_spec.rb +5 -5
 - data/spec/languages/math/tokenizer_spec.rb +1 -1
 - data/spec/languages/math/tree_spec.rb +1 -1
 - data/spec/{base → rvm}/class_spec.rb +2 -2
 - data/spec/{base/interpreter → rvm}/enviroment_spec.rb +19 -9
 - data/spec/{base → rvm}/function_spec.rb +2 -2
 - data/spec/{functions → rvm/functions}/association/assoc_get_spec.rb +2 -2
 - data/spec/{functions → rvm/functions}/association/assoc_set_spec.rb +2 -2
 - data/spec/rvm/functions/collection/get_spec.rb +12 -0
 - data/spec/rvm/functions/collection/set_spec.rb +10 -0
 - data/spec/rvm/functions/collection/size_spec.rb +10 -0
 - data/spec/{functions → rvm/functions}/list/split_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/ansi_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/capstr_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/center_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/ljust_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/regmatch_spec.rb +3 -3
 - data/spec/{functions → rvm/functions}/string/rjust_spec.rb +3 -3
 - data/spec/{base → rvm}/interpreter/assignment_spec.rb +1 -1
 - data/spec/rvm/interpreter/condition_spec.rb +103 -0
 - data/spec/{base → rvm}/interpreter/constant_spec.rb +1 -1
 - data/spec/rvm/interpreter/core_call_spec.rb +72 -0
 - data/spec/{base → rvm}/interpreter/interpreter_spec.rb +1 -1
 - data/spec/{base → rvm}/interpreter/parameter_spec.rb +1 -1
 - data/spec/rvm/interpreter/sequence_spec.rb +47 -0
 - data/spec/{base → rvm}/interpreter/variable_spec.rb +1 -1
 - data/spec/{base → rvm}/plugin_spec.rb +2 -2
 - metadata +66 -35
 - data/lib/rake/helpers/code_statistics.rb +0 -167
 - data/spec/base/interpreter/condition_spec.rb +0 -47
 - data/spec/base/interpreter/function_call_spec.rb +0 -72
 - data/spec/base/interpreter/sequence_spec.rb +0 -20
 - data/spec/functions/collection/get_spec.rb +0 -12
 - data/spec/functions/collection/set_spec.rb +0 -10
 - data/spec/functions/collection/size_spec.rb +0 -10
 
| 
         @@ -1,72 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'lib/rvm/interpreter'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'lib/rvm/classes/block'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class FunctionMock < RVM::Functions::Function
         
     | 
| 
       5 
     | 
    
         
            -
              register_for :mock
         
     | 
| 
       6 
     | 
    
         
            -
              class << self
         
     | 
| 
       7 
     | 
    
         
            -
                def call *args
         
     | 
| 
       8 
     | 
    
         
            -
                  'result'
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
                def execargs
         
     | 
| 
       11 
     | 
    
         
            -
                  @execargs
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
                def execargs=v
         
     | 
| 
       14 
     | 
    
         
            -
                  @execargs =  v
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            class RVM::Interpreter::FunctionCall
         
     | 
| 
       20 
     | 
    
         
            -
              def fun
         
     | 
| 
       21 
     | 
    
         
            -
                @function
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
              def fun= f
         
     | 
| 
       24 
     | 
    
         
            -
                @function = f
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            describe RVM::Interpreter::FunctionCall do
         
     | 
| 
       29 
     | 
    
         
            -
              before do
         
     | 
| 
       30 
     | 
    
         
            -
                @param1 = mock('param 1 mock')
         
     | 
| 
       31 
     | 
    
         
            -
                @param2 = mock('param 2 mock')
         
     | 
| 
       32 
     | 
    
         
            -
                @function = mock('function mock')
         
     | 
| 
       33 
     | 
    
         
            -
                @env = mock('env mock')
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              
         
     | 
| 
       37 
     | 
    
         
            -
              describe "(execution)" do
         
     | 
| 
       38 
     | 
    
         
            -
                before do
         
     | 
| 
       39 
     | 
    
         
            -
                  @object = RVM::Interpreter::FunctionCall.new(@function, [@param1,@param2])          
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
                
         
     | 
| 
       42 
     | 
    
         
            -
                it "shold execute it's params when the function.execargs returns true" do
         
     | 
| 
       43 
     | 
    
         
            -
                  FunctionMock.execargs = true
         
     | 
| 
       44 
     | 
    
         
            -
                  @object = RVM::Interpreter::FunctionCall.new('mock', [@param1,@param2])
         
     | 
| 
       45 
     | 
    
         
            -
                  @env.should_receive(:function).once.with('mock').and_return(nil)
         
     | 
| 
       46 
     | 
    
         
            -
                  @param1.should_receive(:execute).once.with(@env).and_return('param 1')
         
     | 
| 
       47 
     | 
    
         
            -
                  @param2.should_receive(:execute).once.with(@env).and_return('param 2')
         
     | 
| 
       48 
     | 
    
         
            -
                  @object.execute(@env).should == 'result'
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
     | 
    
         
            -
                
         
     | 
| 
       51 
     | 
    
         
            -
                it "shold not execute it's params when the function.execargs returns false" do
         
     | 
| 
       52 
     | 
    
         
            -
                  FunctionMock.execargs = false
         
     | 
| 
       53 
     | 
    
         
            -
                  @object = RVM::Interpreter::FunctionCall.new('mock', [@param1,@param2])
         
     | 
| 
       54 
     | 
    
         
            -
                  @env.should_receive(:function).once.with('mock').and_return(nil)
         
     | 
| 
       55 
     | 
    
         
            -
                  @object.execute(@env).should == 'result'
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
                
         
     | 
| 
       58 
     | 
    
         
            -
                it "should return the data type of the function" do
         
     | 
| 
       59 
     | 
    
         
            -
                  @function.should_receive(:data_type).once.with(no_args).and_return(:type)
         
     | 
| 
       60 
     | 
    
         
            -
                  @object.data_type.should == :type
         
     | 
| 
       61 
     | 
    
         
            -
                end
         
     | 
| 
       62 
     | 
    
         
            -
                
         
     | 
| 
       63 
     | 
    
         
            -
                it "should not compare with random objects" do
         
     | 
| 
       64 
     | 
    
         
            -
                  @object.==(1).should be_false
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
                
         
     | 
| 
       67 
     | 
    
         
            -
                it "should compare with other function if args and params are true it is the same" do
         
     | 
| 
       68 
     | 
    
         
            -
                  @object = RVM::Interpreter::FunctionCall.new(:mock, [@param1,@param2])
         
     | 
| 
       69 
     | 
    
         
            -
                  @object.==(@object).should be_true
         
     | 
| 
       70 
     | 
    
         
            -
                end
         
     | 
| 
       71 
     | 
    
         
            -
              end
         
     | 
| 
       72 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,20 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'lib/rvm/interpreter'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            describe RVM::Interpreter::Sequence do
         
     | 
| 
       4 
     | 
    
         
            -
              before do
         
     | 
| 
       5 
     | 
    
         
            -
                @part1 = mock('part1 mock')
         
     | 
| 
       6 
     | 
    
         
            -
                @part2 = mock('part2 mock')
         
     | 
| 
       7 
     | 
    
         
            -
                @env = mock('env mock')
         
     | 
| 
       8 
     | 
    
         
            -
                @object = RVM::Interpreter::Sequence.new([@part1,@part2])
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
              
         
     | 
| 
       11 
     | 
    
         
            -
              it "should execute each part after another" do
         
     | 
| 
       12 
     | 
    
         
            -
                @part1.should_receive(:execute).with(@env).once
         
     | 
| 
       13 
     | 
    
         
            -
                @part2.should_receive(:execute).with(@env).once
         
     | 
| 
       14 
     | 
    
         
            -
                @object.execute(@env)
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
              
         
     | 
| 
       17 
     | 
    
         
            -
              it "should have a data_type of :any" do
         
     | 
| 
       18 
     | 
    
         
            -
                @object.data_type.should == :any
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,12 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions'
         
     | 
| 
       2 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions/association/assoc_get'
         
     | 
| 
       3 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions/array/at'
         
     | 
| 
       4 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions/collection/get'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            describe RVM::Functions::Get do
         
     | 
| 
       7 
     | 
    
         
            -
              before(:each) do
         
     | 
| 
       8 
     | 
    
         
            -
                @env = mock('env mock')
         
     | 
| 
       9 
     | 
    
         
            -
                @function = RVM::Functions[:get]
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
              
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,10 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions'
         
     | 
| 
       2 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions/collection/set'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe RVM::Functions::Set do
         
     | 
| 
       5 
     | 
    
         
            -
              before(:each) do
         
     | 
| 
       6 
     | 
    
         
            -
                @env = mock('env mock')
         
     | 
| 
       7 
     | 
    
         
            -
                @function = RVM::Functions[:set]
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
              
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,10 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions'
         
     | 
| 
       2 
     | 
    
         
            -
            require File.dirname(__FILE__) +'/../../../lib/rvm/functions/collection/size'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe RVM::Functions::Set do
         
     | 
| 
       5 
     | 
    
         
            -
              before(:each) do
         
     | 
| 
       6 
     | 
    
         
            -
                @env = mock('env mock')
         
     | 
| 
       7 
     | 
    
         
            -
                @function = RVM::Functions[:set]
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
              
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     |