rVM 0.0.10 → 0.0.11

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 (46) hide show
  1. data/lib/rake/helpers/code_statistics.rb +167 -0
  2. data/lib/rvm/classes.rb +4 -0
  3. data/lib/rvm/classes/string.rb +1 -0
  4. data/lib/rvm/functions/array.rb +3 -0
  5. data/lib/rvm/functions/array/set_at.rb +0 -4
  6. data/lib/rvm/functions/collection/size.rb +2 -2
  7. data/lib/rvm/functions/logic/and.rb +1 -1
  8. data/lib/rvm/functions/logic/or.rb +2 -2
  9. data/lib/rvm/interpreter.rb +84 -44
  10. data/lib/rvm/languages/ecma.rb +581 -501
  11. data/spec/base/class_spec.rb +27 -0
  12. data/spec/base/function_spec.rb +25 -0
  13. data/spec/base/interpreter/assignment_spec.rb +22 -0
  14. data/spec/base/interpreter/condition_spec.rb +47 -0
  15. data/spec/base/interpreter/constant_spec.rb +31 -0
  16. data/spec/base/interpreter/enviroment_spec.rb +51 -0
  17. data/spec/base/interpreter/function_call_spec.rb +72 -0
  18. data/spec/base/interpreter/interpreter_spec.rb +11 -0
  19. data/spec/base/interpreter/parameter_spec.rb +24 -0
  20. data/spec/base/interpreter/sequence_spec.rb +20 -0
  21. data/spec/base/interpreter/variable_spec.rb +24 -0
  22. data/spec/base/plugin_spec.rb +10 -0
  23. data/spec/classes/atom/association_spec.rb +39 -0
  24. data/spec/classes/atom/block_spec.rb +27 -0
  25. data/spec/classes/atom/boolean_spec.rb +67 -0
  26. data/spec/classes/atom/error_spec.rb +43 -0
  27. data/spec/classes/atom/list_spec.rb +68 -0
  28. data/spec/classes/atom/number_spec.rb +132 -0
  29. data/spec/classes/atom/string_spec.rb +175 -0
  30. data/spec/functions/association/assoc_get_spec.rb +41 -0
  31. data/spec/functions/association/assoc_set_spec.rb +43 -0
  32. data/spec/functions/collection/get_spec.rb +12 -0
  33. data/spec/functions/collection/set_spec.rb +10 -0
  34. data/spec/functions/collection/size_spec.rb +10 -0
  35. data/spec/functions/list/split_spec.rb +47 -0
  36. data/spec/functions/string/ansi_spec.rb +44 -0
  37. data/spec/functions/string/capstr_spec.rb +42 -0
  38. data/spec/functions/string/center_spec.rb +49 -0
  39. data/spec/functions/string/ljust_spec.rb +49 -0
  40. data/spec/functions/string/regmatch_spec.rb +52 -0
  41. data/spec/functions/string/rjust_spec.rb +49 -0
  42. data/spec/languages/ecma_spec.rb +337 -0
  43. data/spec/languages/math/compiler_spec.rb +49 -0
  44. data/spec/languages/math/tokenizer_spec.rb +73 -0
  45. data/spec/languages/math/tree_spec.rb +153 -0
  46. metadata +42 -5
@@ -0,0 +1,153 @@
1
+ require File.join(File.dirname(__FILE__), '/../../../lib/rvm/languages/math/tree')
2
+ describe RVM::Languages::Math::Tree do
3
+ before do
4
+ @t = RVM::Languages::Math::Tree
5
+ end
6
+
7
+ it "should handle numbers" do
8
+ @t.generate([['5', :number]]).should == {:type=>:number, :number=>"5"}
9
+ end
10
+
11
+ it "should handle idents" do
12
+ @t.generate([['x', :ident]]).should == {:type => :ident, :ident => "x"}
13
+ end
14
+
15
+ it "should handle opperators" do
16
+ @t.generate(
17
+ [['left', :ident], ['+', :opperator], ['right', :ident]]
18
+ ).should == {
19
+ :type => :op,
20
+ :op => "+",
21
+ :left => {:type => :ident, :ident => "left"},
22
+ :right => {:type => :ident, :ident => "right"}
23
+ }
24
+
25
+ @t.generate(
26
+ [['left', :ident], ['+', :opperator], ['middle', :ident], ['-', :opperator], ['right', :ident]]
27
+ ).should == {
28
+ :type => :op,
29
+ :op => "-",
30
+ :left => {
31
+ :type => :op,
32
+ :op => "+",
33
+ :left => {:type => :ident, :ident => "left"},
34
+ :right => {:type => :ident, :ident => "middle"}
35
+ },
36
+ :right => {:type => :ident, :ident => "right"}
37
+ }
38
+
39
+ @t.generate(
40
+ [["f", :function], ['x', :ident], [")", :paren_close], ['+', :opperator], ['right', :ident]]
41
+ ).should == {
42
+ :type => :op,
43
+ :op => "+",
44
+ :left => {
45
+ :type => :function,
46
+ :op => "f",
47
+ :params => [
48
+ {:type => :ident, :ident => "x"},
49
+ ]
50
+ },
51
+ :right => {:type => :ident, :ident => "right"}
52
+ }
53
+
54
+ end
55
+
56
+ it "should handle opperators prioriteis" do
57
+ @t.generate(
58
+ [['left', :ident], ['+', :opperator], ['middle', :ident], ['*', :opperator], ['right', :ident]]
59
+ ).should == {
60
+ :type => :op,
61
+ :op => "+",
62
+ :left => {:type => :ident, :ident => "left"},
63
+ :right => {
64
+ :type => :op,
65
+ :op => "*",
66
+ :left => {:type => :ident, :ident => "middle"},
67
+ :right => {:type => :ident, :ident => "right"}
68
+ }
69
+ }
70
+ end
71
+
72
+ it "should handle parenthets" do
73
+ @t.generate(
74
+ [["(", :paren_open], ['left', :ident], ['+', :opperator], ['middle', :ident], [")", :paren_close], ['*', :opperator], ['right', :ident]]
75
+ ).should == {
76
+ :type => :op,
77
+ :op => "*",
78
+ :left => {
79
+ :type => :op,
80
+ :op => "+",
81
+ :left => {:type => :ident, :ident => "left"},
82
+ :right => {:type => :ident, :ident => "middle"}
83
+ },
84
+ :right => {:type => :ident, :ident => "right"}
85
+ }
86
+ end
87
+
88
+ it "should handle functions" do
89
+ @t.generate(
90
+ [["f", :function], ['x', :ident], [")", :paren_close]]
91
+ ).should == {
92
+ :type => :function,
93
+ :op => "f",
94
+ :params => [
95
+ {:type => :ident, :ident => "x"},
96
+ ]
97
+ }
98
+
99
+ @t.generate(
100
+ [["f", :function], ['x', :ident], [',', :function_sep], ['y', :ident], [")", :paren_close]]
101
+ ).should == {
102
+ :type => :function,
103
+ :op => "f",
104
+ :params => [
105
+ {:type => :ident, :ident => "y"},
106
+ {:type => :ident, :ident => "x"},
107
+ ]
108
+ }
109
+
110
+
111
+ @t.generate(
112
+ [["f", :function], ['x', :ident], [',', :function_sep], ['y', :ident], [',', :function_sep], ['left', :ident], ['+', :opperator], ['right', :ident], [")", :paren_close]]
113
+ ).should == {
114
+ :type => :function,
115
+ :op => "f",
116
+ :params => [
117
+ {
118
+ :type => :op,
119
+ :op => "+",
120
+ :left => {:type => :ident, :ident => "left"},
121
+ :right => {:type => :ident, :ident => "right"}
122
+ },
123
+ {:type => :ident, :ident => "y"},
124
+ {:type => :ident, :ident => "x"},
125
+ ]
126
+ }
127
+
128
+ @t.generate(
129
+ [["f", :function], ['left', :ident], ['+', :opperator], ['right', :ident], [',', :function_sep], ['y', :ident], [',', :function_sep], ['x', :ident], [")", :paren_close]]
130
+ ).should == {
131
+ :type => :function,
132
+ :op => "f",
133
+ :params => [
134
+ {:type => :ident, :ident => "x"},
135
+ {:type => :ident, :ident => "y"},
136
+ {
137
+ :type => :op,
138
+ :op => "+",
139
+ :left => {:type => :ident, :ident => "left"},
140
+ :right => {:type => :ident, :ident => "right"}
141
+ },
142
+ ]
143
+ }
144
+ end
145
+
146
+ it "should throw exeptions on unknown tokens" do
147
+ lambda{@t.generate([["haha", :not_good]])}.should raise_error
148
+ end
149
+
150
+ it "should discard ; opperators without a right side" do
151
+ @t.generate([['x', :ident], [';', :opperator]]).should == {:type => :ident, :ident => "x"}
152
+ end
153
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rVM
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heinz N. Gies
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-21 00:00:00 +02:00
12
+ date: 2008-07-23 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,6 +22,9 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README
24
24
  files:
25
+ - lib/rake
26
+ - lib/rake/helpers
27
+ - lib/rake/helpers/code_statistics.rb
25
28
  - lib/rvm
26
29
  - lib/rvm/acts_as_rvm_type.rb
27
30
  - lib/rvm/classes
@@ -127,10 +130,44 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  version:
128
131
  requirements: []
129
132
 
130
- rubyforge_project: rmush
133
+ rubyforge_project: rvm
131
134
  rubygems_version: 1.2.0
132
135
  signing_key:
133
136
  specification_version: 2
134
137
  summary: A ruby based VM that lets one add secure scripting to ruby applications.
135
- test_files: []
136
-
138
+ test_files:
139
+ - spec/base/class_spec.rb
140
+ - spec/base/function_spec.rb
141
+ - spec/base/interpreter/assignment_spec.rb
142
+ - spec/base/interpreter/condition_spec.rb
143
+ - spec/base/interpreter/constant_spec.rb
144
+ - spec/base/interpreter/enviroment_spec.rb
145
+ - spec/base/interpreter/function_call_spec.rb
146
+ - spec/base/interpreter/interpreter_spec.rb
147
+ - spec/base/interpreter/parameter_spec.rb
148
+ - spec/base/interpreter/sequence_spec.rb
149
+ - spec/base/interpreter/variable_spec.rb
150
+ - spec/base/plugin_spec.rb
151
+ - spec/classes/atom/association_spec.rb
152
+ - spec/classes/atom/block_spec.rb
153
+ - spec/classes/atom/boolean_spec.rb
154
+ - spec/classes/atom/error_spec.rb
155
+ - spec/classes/atom/list_spec.rb
156
+ - spec/classes/atom/number_spec.rb
157
+ - spec/classes/atom/string_spec.rb
158
+ - spec/functions/association/assoc_get_spec.rb
159
+ - spec/functions/association/assoc_set_spec.rb
160
+ - spec/functions/collection/get_spec.rb
161
+ - spec/functions/collection/set_spec.rb
162
+ - spec/functions/collection/size_spec.rb
163
+ - spec/functions/list/split_spec.rb
164
+ - spec/functions/string/ansi_spec.rb
165
+ - spec/functions/string/capstr_spec.rb
166
+ - spec/functions/string/center_spec.rb
167
+ - spec/functions/string/ljust_spec.rb
168
+ - spec/functions/string/regmatch_spec.rb
169
+ - spec/functions/string/rjust_spec.rb
170
+ - spec/languages/ecma_spec.rb
171
+ - spec/languages/math/compiler_spec.rb
172
+ - spec/languages/math/tokenizer_spec.rb
173
+ - spec/languages/math/tree_spec.rb