rVM 0.0.14 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/README +4 -4
  2. data/bin/rvm +229 -0
  3. data/lib/rvm.rb +6 -6
  4. data/lib/rvm/acts_as_rvm_type.rb +26 -3
  5. data/lib/rvm/classes.rb +9 -15
  6. data/lib/rvm/classes/block.rb +8 -3
  7. data/lib/rvm/classes/class.rb +2 -2
  8. data/lib/rvm/classes/list.rb +1 -1
  9. data/lib/rvm/classes/null.rb +31 -0
  10. data/lib/rvm/classes/number.rb +4 -0
  11. data/lib/rvm/classes/object.rb +1 -1
  12. data/lib/rvm/classes/string.rb +6 -1
  13. data/lib/rvm/environment.rb +256 -0
  14. data/lib/rvm/functions.rb +9 -4
  15. data/lib/rvm/functions/array.rb +26 -2
  16. data/lib/rvm/functions/array/append.rb +31 -1
  17. data/lib/rvm/functions/array/at.rb +29 -1
  18. data/lib/rvm/functions/array/set_at.rb +29 -0
  19. data/lib/rvm/functions/association/assoc_get.rb +34 -0
  20. data/lib/rvm/functions/association/assoc_set.rb +32 -0
  21. data/lib/rvm/functions/bitwise.rb +3 -0
  22. data/lib/rvm/functions/bitwise/bitwise_and.rb +41 -0
  23. data/lib/rvm/functions/bitwise/bitwise_or.rb +41 -0
  24. data/lib/rvm/functions/bitwise/bitwise_xor.rb +41 -0
  25. data/lib/rvm/functions/collection/get.rb +37 -4
  26. data/lib/rvm/functions/collection/set.rb +37 -3
  27. data/lib/rvm/functions/collection/size.rb +33 -1
  28. data/lib/rvm/functions/general/cmp.rb +35 -7
  29. data/lib/rvm/functions/general/eq.rb +29 -0
  30. data/lib/rvm/functions/general/gt.rb +29 -0
  31. data/lib/rvm/functions/general/gte.rb +29 -0
  32. data/lib/rvm/functions/general/lt.rb +29 -0
  33. data/lib/rvm/functions/general/lte.rb +29 -0
  34. data/lib/rvm/functions/general/neq.rb +5 -0
  35. data/lib/rvm/functions/io/print.rb +38 -8
  36. data/lib/rvm/functions/list/align.rb +25 -1
  37. data/lib/rvm/functions/list/join.rb +27 -0
  38. data/lib/rvm/functions/list/map.rb +34 -0
  39. data/lib/rvm/functions/list/split.rb +31 -0
  40. data/lib/rvm/functions/logic/and.rb +36 -2
  41. data/lib/rvm/functions/logic/not.rb +27 -0
  42. data/lib/rvm/functions/logic/or.rb +32 -2
  43. data/lib/rvm/functions/math/add.rb +25 -0
  44. data/lib/rvm/functions/math/cos.rb +39 -0
  45. data/lib/rvm/functions/math/div.rb +25 -0
  46. data/lib/rvm/functions/math/mod.rb +41 -0
  47. data/lib/rvm/functions/math/mul.rb +25 -0
  48. data/lib/rvm/functions/math/neg.rb +25 -0
  49. data/lib/rvm/functions/math/power.rb +25 -0
  50. data/lib/rvm/functions/math/shl.rb +41 -0
  51. data/lib/rvm/functions/math/shr.rb +41 -0
  52. data/lib/rvm/functions/math/sin.rb +39 -0
  53. data/lib/rvm/functions/math/sub.rb +25 -0
  54. data/lib/rvm/functions/math/tan.rb +39 -0
  55. data/lib/rvm/functions/rails/print.rb +33 -3
  56. data/lib/rvm/interpreter.rb +405 -272
  57. data/lib/rvm/languages.rb +45 -11
  58. data/lib/rvm/languages/brainfuck.rb +15 -16
  59. data/lib/rvm/languages/ecma.rb +4 -1257
  60. data/lib/rvm/languages/ecma/compiler.rb +1353 -0
  61. data/lib/rvm/languages/ecma/core-math.js +84 -0
  62. data/lib/rvm/languages/math.rb +9 -16
  63. data/lib/rvm/languages/math/compiler.rb +9 -9
  64. data/lib/rvm/languages/math/tokenizer.rb +1 -1
  65. data/lib/rvm/languages/math/tree.rb +14 -14
  66. data/lib/rvm/library.rb +26 -18
  67. data/lib/rvm/optimisation.rb +109 -0
  68. data/lib/rvm/plugin.rb +109 -45
  69. data/lib/rvm/rails.rb +79 -54
  70. data/spec/classes/atom/association_spec.rb +8 -8
  71. data/spec/classes/atom/block_spec.rb +8 -5
  72. data/spec/classes/atom/boolean_spec.rb +1 -1
  73. data/spec/classes/atom/error_spec.rb +1 -1
  74. data/spec/classes/atom/list_spec.rb +1 -1
  75. data/spec/classes/atom/number_spec.rb +2 -2
  76. data/spec/classes/atom/string_spec.rb +1 -1
  77. data/spec/languages/ecma/ecma_spec.rb +94 -38
  78. data/spec/languages/ecma/json_spec.rb +4 -4
  79. data/spec/languages/math/compiler_spec.rb +5 -5
  80. data/spec/languages/math/tokenizer_spec.rb +1 -1
  81. data/spec/languages/math/tree_spec.rb +1 -1
  82. data/spec/{base → rvm}/class_spec.rb +2 -2
  83. data/spec/{base/interpreter → rvm}/enviroment_spec.rb +19 -9
  84. data/spec/{base → rvm}/function_spec.rb +2 -2
  85. data/spec/{functions → rvm/functions}/association/assoc_get_spec.rb +2 -2
  86. data/spec/{functions → rvm/functions}/association/assoc_set_spec.rb +2 -2
  87. data/spec/rvm/functions/collection/get_spec.rb +12 -0
  88. data/spec/rvm/functions/collection/set_spec.rb +10 -0
  89. data/spec/rvm/functions/collection/size_spec.rb +10 -0
  90. data/spec/{functions → rvm/functions}/list/split_spec.rb +3 -3
  91. data/spec/{functions → rvm/functions}/string/ansi_spec.rb +3 -3
  92. data/spec/{functions → rvm/functions}/string/capstr_spec.rb +3 -3
  93. data/spec/{functions → rvm/functions}/string/center_spec.rb +3 -3
  94. data/spec/{functions → rvm/functions}/string/ljust_spec.rb +3 -3
  95. data/spec/{functions → rvm/functions}/string/regmatch_spec.rb +3 -3
  96. data/spec/{functions → rvm/functions}/string/rjust_spec.rb +3 -3
  97. data/spec/{base → rvm}/interpreter/assignment_spec.rb +1 -1
  98. data/spec/rvm/interpreter/condition_spec.rb +103 -0
  99. data/spec/{base → rvm}/interpreter/constant_spec.rb +1 -1
  100. data/spec/rvm/interpreter/core_call_spec.rb +72 -0
  101. data/spec/{base → rvm}/interpreter/interpreter_spec.rb +1 -1
  102. data/spec/{base → rvm}/interpreter/parameter_spec.rb +1 -1
  103. data/spec/rvm/interpreter/sequence_spec.rb +47 -0
  104. data/spec/{base → rvm}/interpreter/variable_spec.rb +1 -1
  105. data/spec/{base → rvm}/plugin_spec.rb +2 -2
  106. metadata +66 -35
  107. data/lib/rake/helpers/code_statistics.rb +0 -167
  108. data/spec/base/interpreter/condition_spec.rb +0 -47
  109. data/spec/base/interpreter/function_call_spec.rb +0 -72
  110. data/spec/base/interpreter/sequence_spec.rb +0 -20
  111. data/spec/functions/collection/get_spec.rb +0 -12
  112. data/spec/functions/collection/set_spec.rb +0 -10
  113. 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