ruby_parser 1.0.0 → 2.0.0
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.
Potentially problematic release.
This version of ruby_parser might be problematic. Click here for more details.
- data/.autotest +26 -3
- data/History.txt +108 -0
- data/Manifest.txt +3 -0
- data/README.txt +1 -1
- data/Rakefile +126 -28
- data/bin/ruby_parse +89 -0
- data/lib/ruby_lexer.rb +1117 -2536
- data/lib/ruby_parser.rb +5407 -5849
- data/lib/ruby_parser.y +1763 -1621
- data/lib/ruby_parser_extras.rb +1051 -0
- data/test/test_ruby_lexer.rb +1607 -267
- data/test/test_ruby_parser.rb +317 -175
- data/test/test_ruby_parser_extras.rb +177 -0
- metadata +27 -10
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'ruby_parser_extras'
|
3
|
+
|
4
|
+
class TestStackState < Test::Unit::TestCase
|
5
|
+
def test_stack_state
|
6
|
+
s = StackState.new :test
|
7
|
+
s.push true
|
8
|
+
s.push false
|
9
|
+
s.lexpop
|
10
|
+
assert_equal [false, true], s.stack
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_is_in_state
|
14
|
+
s = StackState.new :test
|
15
|
+
assert_equal false, s.is_in_state
|
16
|
+
s.push false
|
17
|
+
assert_equal false, s.is_in_state
|
18
|
+
s.push true
|
19
|
+
assert_equal true, s.is_in_state
|
20
|
+
s.push false
|
21
|
+
assert_equal false, s.is_in_state
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_lexpop
|
25
|
+
s = StackState.new :test
|
26
|
+
assert_equal [false], s.stack
|
27
|
+
s.push true
|
28
|
+
s.push false
|
29
|
+
assert_equal [false, true, false], s.stack
|
30
|
+
s.lexpop
|
31
|
+
assert_equal [false, true], s.stack
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_pop
|
35
|
+
s = StackState.new :test
|
36
|
+
assert_equal [false], s.stack
|
37
|
+
s.push true
|
38
|
+
assert_equal [false, true], s.stack
|
39
|
+
assert_equal true, s.pop
|
40
|
+
assert_equal [false], s.stack
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_push
|
44
|
+
s = StackState.new :test
|
45
|
+
assert_equal [false], s.stack
|
46
|
+
s.push true
|
47
|
+
s.push false
|
48
|
+
assert_equal [false, true, false], s.stack
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class TestEnvironment < Test::Unit::TestCase
|
53
|
+
def deny t
|
54
|
+
assert ! t
|
55
|
+
end
|
56
|
+
|
57
|
+
def setup
|
58
|
+
@env = Environment.new
|
59
|
+
@env[:blah] = 42
|
60
|
+
assert_equal 42, @env[:blah]
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_use
|
64
|
+
@env.use :blah
|
65
|
+
expected = [{ :blah => true }]
|
66
|
+
assert_equal expected, @env.instance_variable_get(:"@use")
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_use_scoped
|
70
|
+
@env.use :blah
|
71
|
+
@env.extend
|
72
|
+
expected = [{}, { :blah => true }]
|
73
|
+
assert_equal expected, @env.instance_variable_get(:"@use")
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_used_eh
|
77
|
+
@env.extend :dynamic
|
78
|
+
@env[:x] = :dvar
|
79
|
+
@env.use :x
|
80
|
+
assert_equal true, @env.used?(:x)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_used_eh_none
|
84
|
+
assert_equal nil, @env.used?(:x)
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_used_eh_scoped
|
88
|
+
self.test_used_eh
|
89
|
+
@env.extend :dynamic
|
90
|
+
assert_equal true, @env.used?(:x)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_var_scope_dynamic
|
94
|
+
@env.extend :dynamic
|
95
|
+
assert_equal 42, @env[:blah]
|
96
|
+
@env.unextend
|
97
|
+
assert_equal 42, @env[:blah]
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_var_scope_static
|
101
|
+
@env.extend
|
102
|
+
assert_equal nil, @env[:blah]
|
103
|
+
@env.unextend
|
104
|
+
assert_equal 42, @env[:blah]
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_dynamic
|
108
|
+
expected1 = {}
|
109
|
+
expected2 = { :x => 42 }
|
110
|
+
|
111
|
+
assert_equal expected1, @env.dynamic
|
112
|
+
begin
|
113
|
+
@env.extend :dynamic
|
114
|
+
assert_equal expected1, @env.dynamic
|
115
|
+
|
116
|
+
@env[:x] = 42
|
117
|
+
assert_equal expected2, @env.dynamic
|
118
|
+
|
119
|
+
begin
|
120
|
+
@env.extend :dynamic
|
121
|
+
assert_equal expected2, @env.dynamic
|
122
|
+
@env.unextend
|
123
|
+
end
|
124
|
+
|
125
|
+
assert_equal expected2, @env.dynamic
|
126
|
+
@env.unextend
|
127
|
+
end
|
128
|
+
assert_equal expected1, @env.dynamic
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_all_dynamic
|
132
|
+
expected = { :blah => 42 }
|
133
|
+
|
134
|
+
@env.extend :dynamic
|
135
|
+
assert_equal expected, @env.all
|
136
|
+
@env.unextend
|
137
|
+
assert_equal expected, @env.all
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_all_static
|
141
|
+
@env.extend
|
142
|
+
expected = { }
|
143
|
+
assert_equal expected, @env.all
|
144
|
+
|
145
|
+
@env.unextend
|
146
|
+
expected = { :blah => 42 }
|
147
|
+
assert_equal expected, @env.all
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_dynamic_eh
|
151
|
+
assert_equal false, @env.dynamic?
|
152
|
+
@env.extend :dynamic
|
153
|
+
assert_equal true, @env.dynamic?
|
154
|
+
@env.extend
|
155
|
+
assert_equal false, @env.dynamic?
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_all_static_deeper
|
159
|
+
expected0 = { :blah => 42 }
|
160
|
+
expected1 = { :blah => 42, :blah2 => 24 }
|
161
|
+
expected2 = { :blah => 27 }
|
162
|
+
|
163
|
+
@env.extend :dynamic
|
164
|
+
@env[:blah2] = 24
|
165
|
+
assert_equal expected1, @env.all
|
166
|
+
|
167
|
+
@env.extend
|
168
|
+
@env[:blah] = 27
|
169
|
+
assert_equal expected2, @env.all
|
170
|
+
|
171
|
+
@env.unextend
|
172
|
+
assert_equal expected1, @env.all
|
173
|
+
|
174
|
+
@env.unextend
|
175
|
+
assert_equal expected0, @env.all
|
176
|
+
end
|
177
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -9,11 +9,12 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2008-10-22 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ParseTree
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -21,19 +22,31 @@ dependencies:
|
|
21
22
|
- !ruby/object:Gem::Version
|
22
23
|
version: "0"
|
23
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sexp_processor
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.0.0
|
34
|
+
version:
|
24
35
|
- !ruby/object:Gem::Dependency
|
25
36
|
name: hoe
|
37
|
+
type: :development
|
26
38
|
version_requirement:
|
27
39
|
version_requirements: !ruby/object:Gem::Requirement
|
28
40
|
requirements:
|
29
41
|
- - ">="
|
30
42
|
- !ruby/object:Gem::Version
|
31
|
-
version: 1.
|
43
|
+
version: 1.8.0
|
32
44
|
version:
|
33
|
-
description: "ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension). RP's output is the same as ParseTree's output: s-expressions using ruby's arrays and base types.
|
34
|
-
email:
|
35
|
-
|
36
|
-
|
45
|
+
description: "ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension). RP's output is the same as ParseTree's output: s-expressions using ruby's arrays and base types."
|
46
|
+
email:
|
47
|
+
- ryand-ruby@zenspider.com
|
48
|
+
executables:
|
49
|
+
- ruby_parse
|
37
50
|
extensions: []
|
38
51
|
|
39
52
|
extra_rdoc_files:
|
@@ -46,13 +59,16 @@ files:
|
|
46
59
|
- Manifest.txt
|
47
60
|
- README.txt
|
48
61
|
- Rakefile
|
62
|
+
- bin/ruby_parse
|
49
63
|
- lib/ruby_lexer.rb
|
50
64
|
- lib/ruby_parser.y
|
65
|
+
- lib/ruby_parser_extras.rb
|
51
66
|
- test/test_ruby_lexer.rb
|
52
67
|
- test/test_ruby_parser.rb
|
68
|
+
- test/test_ruby_parser_extras.rb
|
53
69
|
- lib/ruby_parser.rb
|
54
70
|
has_rdoc: true
|
55
|
-
homepage:
|
71
|
+
homepage: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
|
56
72
|
post_install_message:
|
57
73
|
rdoc_options:
|
58
74
|
- --main
|
@@ -74,10 +90,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
90
|
requirements: []
|
75
91
|
|
76
92
|
rubyforge_project: parsetree
|
77
|
-
rubygems_version: 1.0
|
93
|
+
rubygems_version: 1.3.0
|
78
94
|
signing_key:
|
79
95
|
specification_version: 2
|
80
|
-
summary:
|
96
|
+
summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension)
|
81
97
|
test_files:
|
82
98
|
- test/test_ruby_lexer.rb
|
83
99
|
- test/test_ruby_parser.rb
|
100
|
+
- test/test_ruby_parser_extras.rb
|