ruby_parser 3.2.2 → 3.3.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.
@@ -151,6 +151,19 @@ module TestRubyParserShared
151
151
  assert_parse rb, pt
152
152
  end
153
153
 
154
+ def test_attrasgn_array_arg
155
+ rb = "a[[1, 2]] = 3"
156
+ pt = s(:attrasgn,
157
+ s(:call, nil, :a),
158
+ :[]=,
159
+ s(:array,
160
+ s(:lit, 1),
161
+ s(:lit, 2)),
162
+ s(:lit, 3))
163
+
164
+ assert_parse rb, pt
165
+ end
166
+
154
167
  def test_block_append
155
168
  head = s(:args)
156
169
  tail = s(:zsuper)
@@ -281,6 +294,13 @@ module TestRubyParserShared
281
294
  assert_parse rb, pt
282
295
  end
283
296
 
297
+ def test_begin_else_return_value
298
+ rb = "begin; else 2; end"
299
+ pt = s(:lit, 2)
300
+
301
+ assert_parse rb, pt
302
+ end
303
+
284
304
  def test_bug_comment_eq_begin
285
305
  rb = "\n\n#\n=begin\nblah\n=end\n\n"
286
306
  pt = nil
@@ -290,6 +310,13 @@ module TestRubyParserShared
290
310
  assert_equal exp, processor.lexer.comments
291
311
  end
292
312
 
313
+ def test_eq_begin_why_wont_people_use_their_spacebar?
314
+ rb = "h[k]=begin\n 42\n end"
315
+ pt = s(:attrasgn, s(:call, nil, :h), :[]=, s(:call, nil, :k), s(:lit, 42))
316
+
317
+ assert_parse rb, pt
318
+ end
319
+
293
320
  def test_bug_call_arglist_parens
294
321
  rb = 'g ( 1), 2'
295
322
  pt = s(:call, nil, :g, s(:lit, 1), s(:lit, 2))
@@ -360,6 +387,14 @@ module TestRubyParserShared
360
387
  assert_equal expected_env, processor.env.all
361
388
  end
362
389
 
390
+ def test_lasgn_ivar_env
391
+ rb = '@a = 42'
392
+ pt = s(:iasgn, :@a, s(:lit, 42))
393
+
394
+ assert_parse rb, pt
395
+ assert_empty processor.env.all
396
+ end
397
+
363
398
  def test_list_append
364
399
  a = s(:lit, 1)
365
400
  b = s(:lit, 2)
@@ -539,6 +574,13 @@ module TestRubyParserShared
539
574
  assert_parse rb, pt
540
575
  end
541
576
 
577
+ def test_str_pct_q
578
+ rb = "%q{a b c}"
579
+ pt = s(:str, "a b c")
580
+
581
+ assert_parse rb, pt
582
+ end
583
+
542
584
  # def test_str_pct_nested_nested
543
585
  # rb = "%{ { #\{ \"#\{1}\" } } }"
544
586
  # assert_equal " { 1 } ", eval(rb)
@@ -590,6 +632,41 @@ module TestRubyParserShared
590
632
  assert_same result.file, result.call.file
591
633
  end
592
634
 
635
+ def test_parse_line_block_inline_comment
636
+ rb = "a\nb # comment\nc"
637
+ pt = s(:block,
638
+ s(:call, nil, :a).line(1),
639
+ s(:call, nil, :b).line(2),
640
+ s(:call, nil, :c).line(3))
641
+
642
+ # see skipped test: test_parse_line_block_inline_comment2
643
+ assert_parse rb, pt
644
+ end
645
+
646
+ def test_parse_line_block_inline_comment2
647
+ skip "I can't fix this yet. Very involved. (process_token to return lineno)"
648
+
649
+ rb = "a\nb # comment\n# another comment\nc"
650
+ pt = s(:block,
651
+ s(:call, nil, :a).line(1),
652
+ s(:call, nil, :b).line(2),
653
+ s(:call, nil, :c).line(4)).line(1)
654
+
655
+ assert_parse rb, pt
656
+ end
657
+
658
+ def test_parse_line_block_inline_comment3
659
+ skip "not yet"
660
+
661
+ rb = "\n\n\na\nb # comment\n# another comment\nc"
662
+ pt = s(:block,
663
+ s(:call, nil, :a).line(4),
664
+ s(:call, nil, :b).line(6),
665
+ s(:call, nil, :c).line(8)).line(1)
666
+
667
+ assert_parse rb, pt
668
+ end
669
+
593
670
  def test_parse_line_call_no_args
594
671
  rb = "f do |x, y|\n x + y\nend"
595
672
 
@@ -610,6 +687,8 @@ module TestRubyParserShared
610
687
  rb = "def f\nend"
611
688
  assert_parse_line rb, pt, 1
612
689
 
690
+ processor.reset
691
+
613
692
  rb = "def f\n\nend"
614
693
  assert_parse_line rb, pt, 1
615
694
  end
@@ -1413,7 +1492,6 @@ module TestRubyParserShared
1413
1492
  end
1414
1493
 
1415
1494
  def test___ENCODING__
1416
- # skip "lexer bug" if ruby18
1417
1495
  rb = "__ENCODING__"
1418
1496
  pt = if Ruby18Parser === processor then
1419
1497
  s(:call, nil, :__ENCODING__)
@@ -2794,6 +2872,28 @@ class TestRuby20Parser < RubyParserTestCase
2794
2872
  assert_parse rb, pt
2795
2873
  end
2796
2874
 
2875
+ def test_defn_kwarg_lvar
2876
+ rb = "def fun(kw: :val); kw; end"
2877
+ pt = s(:defn, :fun, s(:args, s(:kwarg, :kw, s(:lit, :val))), s(:lvar, :kw))
2878
+
2879
+ assert_parse rb, pt
2880
+ end
2881
+
2882
+ def test_defn_kwarg_no_parens
2883
+ rb = "def f a: 1\nend"
2884
+ pt = s(:defn, :f, s(:args, s(:kwarg, :a, s(:lit, 1))), s(:nil))
2885
+
2886
+ assert_parse rb, pt
2887
+ end
2888
+
2889
+ def test_block_kwarg_lvar
2890
+ rb = "bl { |kw: :val| kw }"
2891
+ pt = s(:iter, s(:call, nil, :bl), s(:args, s(:kwarg, :kw, s(:lit, :val))),
2892
+ s(:lvar, :kw))
2893
+
2894
+ assert_parse rb, pt
2895
+ end
2896
+
2797
2897
  def test_defn_powarg
2798
2898
  rb = "def f(**opts) end"
2799
2899
  pt = s(:defn, :f, s(:args, :"**opts"), s(:nil))
@@ -173,36 +173,6 @@ class TestEnvironment < Minitest::Test
173
173
  assert_equal 42, @env[:blah]
174
174
  end
175
175
 
176
- def test_use
177
- @env.use :blah
178
- expected = [{ :blah => true }]
179
- assert_equal expected, @env.instance_variable_get(:"@use")
180
- end
181
-
182
- def test_use_scoped
183
- @env.use :blah
184
- @env.extend
185
- expected = [{}, { :blah => true }]
186
- assert_equal expected, @env.instance_variable_get(:"@use")
187
- end
188
-
189
- def test_used_eh
190
- @env.extend :dynamic
191
- @env[:x] = :dvar
192
- @env.use :x
193
- assert_equal true, @env.used?(:x)
194
- end
195
-
196
- def test_used_eh_none
197
- assert_equal nil, @env.used?(:x)
198
- end
199
-
200
- def test_used_eh_scoped
201
- self.test_used_eh
202
- @env.extend :dynamic
203
- assert_equal true, @env.used?(:x)
204
- end
205
-
206
176
  def test_var_scope_dynamic
207
177
  @env.extend :dynamic
208
178
  assert_equal 42, @env[:blah]
@@ -217,30 +187,6 @@ class TestEnvironment < Minitest::Test
217
187
  assert_equal 42, @env[:blah]
218
188
  end
219
189
 
220
- def test_dynamic
221
- expected1 = {}
222
- expected2 = { :x => 42 }
223
-
224
- assert_equal expected1, @env.dynamic
225
- begin
226
- @env.extend :dynamic
227
- assert_equal expected1, @env.dynamic
228
-
229
- @env[:x] = 42
230
- assert_equal expected2, @env.dynamic
231
-
232
- begin
233
- @env.extend :dynamic
234
- assert_equal expected2, @env.dynamic
235
- @env.unextend
236
- end
237
-
238
- assert_equal expected2, @env.dynamic
239
- @env.unextend
240
- end
241
- assert_equal expected1, @env.dynamic
242
- end
243
-
244
190
  def test_all_dynamic
245
191
  expected = { :blah => 42 }
246
192
 
@@ -260,14 +206,6 @@ class TestEnvironment < Minitest::Test
260
206
  assert_equal expected, @env.all
261
207
  end
262
208
 
263
- def test_dynamic_eh
264
- assert_equal false, @env.dynamic?
265
- @env.extend :dynamic
266
- assert_equal true, @env.dynamic?
267
- @env.extend
268
- assert_equal false, @env.dynamic?
269
- end
270
-
271
209
  def test_all_static_deeper
272
210
  expected0 = { :blah => 42 }
273
211
  expected1 = { :blah => 42, :blah2 => 24 }
@@ -277,7 +215,7 @@ class TestEnvironment < Minitest::Test
277
215
  @env[:blah2] = 24
278
216
  assert_equal expected1, @env.all
279
217
 
280
- @env.extend
218
+ @env.extend
281
219
  @env[:blah] = 27
282
220
  assert_equal expected2, @env.all
283
221
 
metadata CHANGED
@@ -1,24 +1,18 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby_parser
3
- version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
6
- segments:
7
- - 3
8
- - 2
9
- - 2
10
- version: 3.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.3.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ryan Davis
14
8
  autorequire:
15
9
  bindir: bin
16
- cert_chain:
10
+ cert_chain:
17
11
  - |
18
12
  -----BEGIN CERTIFICATE-----
19
- MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
- GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTEzMDkxNjIzMDQxMloXDTE0MDkxNjIzMDQxMlowRTETMBEGA1UE
22
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -28,146 +22,139 @@ cert_chain:
28
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
24
  HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
- AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
- vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
- w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
- l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
- n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
- FBHgymkyj/AOSqKRIpXPhjC6
25
+ AQCFZ7JTzoy1gcG4d8A6dmOJy7ygtO5MFpRIz8HuKCF5566nOvpy7aHhDDzFmQuu
26
+ FX3zDU6ghx5cQIueDhf2SGOncyBmmJRRYawm3wI0o1MeN6LZJ/3cRaOTjSFy6+S6
27
+ zqDmHBp8fVA2TGJtO0BLNkbGVrBJjh0UPmSoGzWlRhEVnYC33TpDAbNA+u39UrQI
28
+ ynwhNN7YbnmSR7+JU2cUjBFv2iPBO+TGuWC+9L2zn3NHjuc6tnmSYipA9y8Hv+As
29
+ Y4evBVezr3SjXz08vPqRO5YRdO3zfeMT8gBjRqZjWJGMZ2lD4XNfrs7eky74CyZw
30
+ xx3n58i0lQkBE1EpKE0lFu/y
37
31
  -----END CERTIFICATE-----
38
-
39
- date: 2013-07-12 00:00:00 Z
40
- dependencies:
41
- - !ruby/object:Gem::Dependency
32
+ date: 2014-01-15 00:00:00.000000000 Z
33
+ dependencies:
34
+ - !ruby/object:Gem::Dependency
42
35
  name: sexp_processor
43
- prerelease: false
44
- requirement: &id001 !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
47
38
  - - ~>
48
- - !ruby/object:Gem::Version
49
- hash: 25
50
- segments:
51
- - 4
52
- - 1
53
- version: "4.1"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.1'
54
41
  type: :runtime
55
- version_requirements: *id001
56
- - !ruby/object:Gem::Dependency
57
- name: minitest
58
42
  prerelease: false
59
- requirement: &id002 !ruby/object:Gem::Requirement
60
- none: false
61
- requirements:
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '4.1'
48
+ - !ruby/object:Gem::Dependency
49
+ name: minitest
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
62
52
  - - ~>
63
- - !ruby/object:Gem::Version
64
- hash: 31
65
- segments:
66
- - 5
67
- - 0
68
- version: "5.0"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.2'
69
55
  type: :development
70
- version_requirements: *id002
71
- - !ruby/object:Gem::Dependency
72
- name: rdoc
73
56
  prerelease: false
74
- requirement: &id003 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '5.2'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rdoc
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
77
66
  - - ~>
78
- - !ruby/object:Gem::Version
79
- hash: 27
80
- segments:
81
- - 4
82
- - 0
83
- version: "4.0"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
84
69
  type: :development
85
- version_requirements: *id003
86
- - !ruby/object:Gem::Dependency
87
- name: racc
88
70
  prerelease: false
89
- requirement: &id004 !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: racc
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
92
80
  - - ~>
93
- - !ruby/object:Gem::Version
94
- hash: 11
95
- segments:
96
- - 1
97
- - 4
98
- - 6
81
+ - !ruby/object:Gem::Version
99
82
  version: 1.4.6
100
83
  type: :development
101
- version_requirements: *id004
102
- - !ruby/object:Gem::Dependency
103
- name: rake
104
84
  prerelease: false
105
- requirement: &id005 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.4.6
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
108
94
  - - <
109
- - !ruby/object:Gem::Version
110
- hash: 23
111
- segments:
112
- - 10
113
- version: "10"
95
+ - !ruby/object:Gem::Version
96
+ version: '11'
114
97
  type: :development
115
- version_requirements: *id005
116
- - !ruby/object:Gem::Dependency
117
- name: hoe
118
98
  prerelease: false
119
- requirement: &id006 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - <
102
+ - !ruby/object:Gem::Version
103
+ version: '11'
104
+ - !ruby/object:Gem::Dependency
105
+ name: hoe
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
122
108
  - - ~>
123
- - !ruby/object:Gem::Version
124
- hash: 11
125
- segments:
126
- - 3
127
- - 6
128
- version: "3.6"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.7'
129
111
  type: :development
130
- version_requirements: *id006
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.7'
131
118
  description: |-
132
119
  ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
133
120
  racc--which does by default use a C extension). RP's output is
134
121
  the same as ParseTree's output: s-expressions using ruby's arrays and
135
122
  base types.
136
-
123
+
137
124
  As an example:
138
-
125
+
139
126
  def conditional1 arg1
140
127
  return 1 if arg1 == 0
141
128
  return 0
142
129
  end
143
-
130
+
144
131
  becomes:
145
-
132
+
146
133
  s(:defn, :conditional1, s(:args, :arg1),
147
134
  s(:if,
148
135
  s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
149
136
  s(:return, s(:lit, 1)),
150
137
  nil),
151
138
  s(:return, s(:lit, 0)))
152
-
139
+
153
140
  Tested against 801,039 files from the latest of all rubygems (as of 2013-05):
154
-
141
+
155
142
  * 1.8 parser is at 99.9739% accuracy, 3.651 sigma
156
143
  * 1.9 parser is at 99.9940% accuracy, 4.013 sigma
157
144
  * 2.0 parser is at 99.9939% accuracy, 4.008 sigma
158
- email:
145
+ email:
159
146
  - ryand-ruby@zenspider.com
160
- executables:
147
+ executables:
161
148
  - ruby_parse
162
149
  - ruby_parse_extract_error
163
150
  extensions: []
164
-
165
- extra_rdoc_files:
151
+ extra_rdoc_files:
166
152
  - History.txt
167
153
  - Manifest.txt
168
154
  - README.txt
169
- files:
155
+ files:
170
156
  - .autotest
157
+ - .gemtest
171
158
  - History.txt
172
159
  - Manifest.txt
173
160
  - README.txt
@@ -187,42 +174,34 @@ files:
187
174
  - test/test_ruby_lexer.rb
188
175
  - test/test_ruby_parser.rb
189
176
  - test/test_ruby_parser_extras.rb
190
- - .gemtest
191
177
  homepage: https://github.com/seattlerb/ruby_parser
192
- licenses: []
193
-
178
+ licenses:
179
+ - MIT
180
+ metadata: {}
194
181
  post_install_message:
195
- rdoc_options:
182
+ rdoc_options:
196
183
  - --main
197
184
  - README.txt
198
- require_paths:
185
+ require_paths:
199
186
  - lib
200
- required_ruby_version: !ruby/object:Gem::Requirement
201
- none: false
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- hash: 3
206
- segments:
207
- - 0
208
- version: "0"
209
- required_rubygems_version: !ruby/object:Gem::Requirement
210
- none: false
211
- requirements:
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- hash: 3
215
- segments:
216
- - 0
217
- version: "0"
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
218
197
  requirements: []
219
-
220
- rubyforge_project: parsetree
221
- rubygems_version: 1.8.25
198
+ rubyforge_project: ruby_parser
199
+ rubygems_version: 2.2.1
222
200
  signing_key:
223
- specification_version: 3
224
- summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension)
225
- test_files:
201
+ specification_version: 4
202
+ summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
203
+ does by default use a C extension)
204
+ test_files:
226
205
  - test/test_ruby_lexer.rb
227
206
  - test/test_ruby_parser.rb
228
207
  - test/test_ruby_parser_extras.rb