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.
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