ruby_parser 3.13.0 → 3.15.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.
@@ -16,11 +16,11 @@ class TestStackState < Minitest::Test
16
16
  p = RubyParser.latest
17
17
  s = nil
18
18
 
19
- out, err = capture_io do
19
+ out, err = capture_io {
20
20
  s = p.handle_encoding str
21
- end
21
+ }
22
22
 
23
- assert_equal orig_str.sub(/\357\273\277/, ''), s
23
+ assert_equal orig_str.sub(/\357\273\277/, ""), s
24
24
 
25
25
  exp_err = ""
26
26
 
@@ -162,7 +162,7 @@ end
162
162
 
163
163
  class TestEnvironment < Minitest::Test
164
164
  def deny t
165
- assert ! t
165
+ assert !t
166
166
  end
167
167
 
168
168
  def setup
@@ -224,3 +224,38 @@ class TestEnvironment < Minitest::Test
224
224
  assert_equal expected0, @env.all
225
225
  end
226
226
  end
227
+
228
+ class Fake20
229
+ include RubyParserStuff
230
+
231
+ def initialize
232
+ end
233
+
234
+ def s(*a) # bypass lexer/lineno stuff that RP overrides in
235
+ Kernel.send :s, *a
236
+ end
237
+ end
238
+
239
+ class TestValueExpr < Minitest::Test
240
+ def assert_value_expr exp, input
241
+ assert_equal exp, Fake20.new.value_expr(input.line(1))
242
+ end
243
+
244
+ def assert_remove_begin exp, input
245
+ assert_equal exp, Fake20.new.remove_begin(input.line(1))
246
+ end
247
+
248
+ def test_value_expr
249
+ assert_value_expr s(:nil), s(:begin)
250
+ assert_value_expr s(:nil), s(:begin, s(:nil))
251
+ assert_value_expr s(:nil), s(:begin, s(:begin, s(:nil)))
252
+ assert_value_expr s(:begin, s(:nil), s(:nil)), s(:begin, s(:nil), s(:nil))
253
+ end
254
+
255
+ def test_remove_begin
256
+ assert_remove_begin s(:nil), s(:begin)
257
+ assert_remove_begin s(:nil), s(:begin, s(:nil))
258
+ assert_remove_begin s(:nil), s(:begin, s(:begin, s(:nil)))
259
+ assert_remove_begin s(:begin, s(:nil), s(:nil)), s(:begin, s(:nil), s(:nil))
260
+ end
261
+ end
@@ -1,4 +1,4 @@
1
- #!/usr/bin/ruby -ws
1
+ #!/usr/bin/env ruby -ws
2
2
 
3
3
  $v ||= false
4
4
 
@@ -107,6 +107,7 @@ def munge s
107
107
 
108
108
  '"defined?"', "kDEFINED",
109
109
 
110
+ "<none>", "none",
110
111
 
111
112
  '"do (for condition)"', "kDO_COND",
112
113
  '"do (for lambda)"', "kDO_LAMBDA",
@@ -117,6 +118,8 @@ def munge s
117
118
 
118
119
  /@(\d+)(\s+|$)/, "",
119
120
  /\$?@(\d+) */, "", # TODO: remove?
121
+
122
+ /_EXPR/, "",
120
123
  ]
121
124
 
122
125
  renames.each_slice(2) do |(a, b)|
@@ -150,7 +153,7 @@ ARGF.each_line do |line|
150
153
  next if last_token == token
151
154
  puts "next token is %p (%p)" % [token, last_token]
152
155
  last_token = token
153
- when /^Next token is token (\S+)/ then
156
+ when /^Next token is token ("[^"]+"|\S+)/ then
154
157
  token = munge $1
155
158
  next if last_token == token
156
159
  puts "next token is %p (%p)" % [token, last_token]
@@ -167,7 +170,7 @@ ARGF.each_line do |line|
167
170
  item = $1
168
171
  stack << munge(item)
169
172
  when /^-> \$\$ = (?:token|nterm) (.+) \(.*\)/ then
170
- stack << "<none>" if stack.empty?
173
+ stack << "none" if stack.empty?
171
174
  item = munge $1
172
175
  x = stack.map { |s| s.strip }.join " "
173
176
  if x != item then # prevent kdef -> kdef
@@ -193,10 +196,13 @@ ARGF.each_line do |line|
193
196
  # TODO: make pretty, but still informative w/ line numbers etc
194
197
  puts line.gsub("true", "1").gsub("false", "0")
195
198
  when /^lex_state: :?([\w|]+) -> :?([\w|]+)(?: (?:at|from) (.*))?/ then
196
- if $3 && $v then
197
- puts "lex_state: #{$1.upcase} -> #{$2.upcase} at #{$3}"
199
+ a, b, c = $1.upcase, $2.upcase, $3
200
+ a.gsub! /EXPR_/, ""
201
+ b.gsub! /EXPR_/, ""
202
+ if c && $v then
203
+ puts "lex_state: #{a} -> #{b} at #{c}"
198
204
  else
199
- puts "lex_state: #{$1.upcase} -> #{$2.upcase}"
205
+ puts "lex_state: #{a} -> #{b}"
200
206
  end
201
207
  when /debug|FUCK/ then
202
208
  puts line.chomp
@@ -6,14 +6,30 @@ $p ||= false
6
6
  require "ripper/sexp"
7
7
  require "pp" if $p
8
8
 
9
+ if ARGV.empty? then
10
+ warn "reading from stdin"
11
+ ARGV << "-"
12
+ end
13
+
14
+ class MySexpBuilder < Ripper::SexpBuilderPP
15
+ def on_parse_error msg
16
+ Kernel.warn msg
17
+ end
18
+ end
19
+
9
20
  ARGV.each do |path|
10
- src = File.read path
11
- rip = Ripper::SexpBuilderPP.new src
21
+ src = path == "-" ? $stdin.read : File.read(path)
22
+ rip = MySexpBuilder.new src
12
23
  rip.yydebug = $d
13
24
 
14
25
  sexp = rip.parse
15
26
 
16
- puts "accept" unless rip.error?
27
+ if rip.error? then
28
+ warn "skipping"
29
+ next
30
+ end
31
+
32
+ puts "accept"
17
33
 
18
34
  if $p then
19
35
  pp sexp
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: 3.13.0
4
+ version: 3.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -10,9 +10,9 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBBDANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE4MTIwNDIxMzAxNFoXDTE5MTIwNDIxMzAxNFowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTE5MTIxMzAwMDIwNFoXDTIwMTIxMjAwMDIwNFowRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -22,14 +22,14 @@ cert_chain:
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
24
  HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
25
- AQCbJwLmpJR2PomLU+Zzw3KRzH/hbyUWc/ftru71AopZ1fy4iY9J/BW5QYKVYwbP
26
- V0FSBWtvfI/RdwfKGtuGhPKECZgmLieGuZ3XCc09qPu1bdg7i/tu1p0t0c6163ku
27
- nDMDIC/t/DAFK0TY9I3HswuyZGbLW7rgF0DmiuZdN/RPhHq2pOLMLXJmFclCb/im
28
- 9yToml/06TJdUJ5p64mkBs0TzaK66DIB1Smd3PdtfZqoRV+EwaXMdx0Hb3zdR1JR
29
- Em82dBUFsipwMLCYj39kcyHWAxyl6Ae1Cn9r/ItVBCxoeFdrHjfavnrIEoXUt4bU
30
- UfBugfLD19bu3nvL+zTAGx/U
25
+ AQCkkcHqAa6IKLYGl93rn78J3L+LnqyxaA059n4IGMHWN5bv9KBQnIjOrpLadtYZ
26
+ vhWkunWDKdfVapBEq5+T4HzqnsEXC3aCv6JEKJY6Zw7iSzl0M8hozuzRr+w46wvT
27
+ fV2yTN6QTVxqbMsJJyjosks4ZdQYov2zdvQpt1HsLi+Qmckmg8SPZsd+T8uiiBCf
28
+ b+1ORSM5eEfBQenPXy83LZcoQz8i6zVB4aAfTGGdhxjoMGUEmSZ6xpkOzmnGa9QK
29
+ m5x9IDiApM+vCELNwDXXGNFEnQBBK+wAe4Pek8o1V1TTOxL1kGPewVOitX1p3xoN
30
+ h7iEjga8iM1LbZUfiISZ+WrB
31
31
  -----END CERTIFICATE-----
32
- date: 2019-03-13 00:00:00.000000000 Z
32
+ date: 2020-09-01 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: sexp_processor
@@ -113,19 +113,19 @@ dependencies:
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '3.17'
116
+ version: '3.22'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '3.17'
123
+ version: '3.22'
124
124
  description: |-
125
125
  ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
126
- racc--which does by default use a C extension). RP's output is
127
- the same as ParseTree's output: s-expressions using ruby's arrays and
128
- base types.
126
+ racc--which does by default use a C extension). It outputs
127
+ s-expressions which can be manipulated and converted back to ruby via
128
+ the ruby2ruby gem.
129
129
 
130
130
  As an example:
131
131
 
@@ -186,6 +186,8 @@ files:
186
186
  - lib/ruby25_parser.y
187
187
  - lib/ruby26_parser.rb
188
188
  - lib/ruby26_parser.y
189
+ - lib/ruby27_parser.rb
190
+ - lib/ruby27_parser.y
189
191
  - lib/ruby_lexer.rb
190
192
  - lib/ruby_lexer.rex
191
193
  - lib/ruby_lexer.rex.rb
@@ -200,7 +202,9 @@ files:
200
202
  homepage: https://github.com/seattlerb/ruby_parser
201
203
  licenses:
202
204
  - MIT
203
- metadata: {}
205
+ metadata:
206
+ homepage_uri: https://github.com/seattlerb/ruby_parser
207
+ bug_tracker_uri: https://github.com/seattlerb/ruby_parser/issues
204
208
  post_install_message:
205
209
  rdoc_options:
206
210
  - "--main"
@@ -211,14 +215,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
215
  requirements:
212
216
  - - ">="
213
217
  - !ruby/object:Gem::Version
214
- version: '0'
218
+ version: '2.1'
219
+ - - "<"
220
+ - !ruby/object:Gem::Version
221
+ version: '3.1'
215
222
  required_rubygems_version: !ruby/object:Gem::Requirement
216
223
  requirements:
217
224
  - - ">="
218
225
  - !ruby/object:Gem::Version
219
226
  version: '0'
220
227
  requirements: []
221
- rubygems_version: 3.0.2
228
+ rubygems_version: 3.1.4
222
229
  signing_key:
223
230
  specification_version: 4
224
231
  summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
metadata.gz.sig CHANGED
@@ -1 +1,4 @@
1
- �]��|F�H�SU��(�H����>w�Z�a��S���F���X��P��-E��Q�qM����H�H����̠�u��ZG����B���oXOp1��QZ�)Elܧ�H6�Q���ղ� ��8[�dO���������A�-N`�=��m9t��j��n9�Pٻ�۲ja��;s8;j�w�n�a��� I��Fξ��̊+C|��/��1�z�}'�MZ8,��$��B�T5�9b�O�\¾��y)5+H�[���/��
1
+ Y9~��:��
2
+ X�����-�)4Or[�#���C-�����pZs3W���حg���ۼL}�m�A'�G��ka���%I�N��B�N�>e���:� ���n�P�Kĉ�'���-�6p�������`��[je2�A���K�p�(<ˆ0(�}6E2 ��D��56W��R+���hPՎP�;��� �t�*�� 1] �.9�f��#=���?cW�pN�ͧ��DM���g�qxj3�!eP!���H��X�/�
3
+ ��
4
+ �f