rVM 0.0.14 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- 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
|