ruby_parser-legacy 1.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-legacy might be problematic. Click here for more details.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +1 -0
- data/.autotest +26 -0
- data/History.rdoc +6 -0
- data/Manifest.txt +19 -0
- data/README.rdoc +54 -0
- data/Rakefile +49 -0
- data/lib/ruby_parser/legacy.rb +5 -0
- data/lib/ruby_parser/legacy/ruby18_parser.rb +5794 -0
- data/lib/ruby_parser/legacy/ruby18_parser.y +1909 -0
- data/lib/ruby_parser/legacy/ruby19_parser.rb +6186 -0
- data/lib/ruby_parser/legacy/ruby19_parser.y +2117 -0
- data/lib/ruby_parser/legacy/ruby_lexer.rb +1412 -0
- data/lib/ruby_parser/legacy/ruby_lexer.rex +179 -0
- data/lib/ruby_parser/legacy/ruby_lexer.rex.rb +323 -0
- data/lib/ruby_parser/legacy/ruby_parser.rb +30 -0
- data/lib/ruby_parser/legacy/ruby_parser_extras.rb +1388 -0
- data/test/ruby_parser/test_legacy.rb +8 -0
- data/test/ruby_parser/test_ruby_lexer.rb +2984 -0
- data/test/ruby_parser/test_ruby_parser.rb +3951 -0
- data/test/ruby_parser/test_ruby_parser_extras.rb +226 -0
- metadata +181 -0
- metadata.gz.sig +0 -0
@@ -0,0 +1,226 @@
|
|
1
|
+
# encoding: US-ASCII
|
2
|
+
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "ruby_parser/legacy/ruby_parser_extras"
|
5
|
+
require "ruby_parser/legacy/ruby_parser"
|
6
|
+
|
7
|
+
class RubyParser::Legacy::TestStackState < Minitest::Test
|
8
|
+
attr_reader :s
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@s = RubyParser::Legacy::RubyParserStuff::StackState.new :test
|
12
|
+
end
|
13
|
+
|
14
|
+
def assert_encoding str, default = false
|
15
|
+
orig_str = str.dup
|
16
|
+
p = RubyParser::V19.new
|
17
|
+
s = nil
|
18
|
+
|
19
|
+
out, err = capture_io do
|
20
|
+
s = p.handle_encoding str
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_equal orig_str.sub(/\357\273\277/, ''), s
|
24
|
+
|
25
|
+
exp_err = ""
|
26
|
+
|
27
|
+
if defined?(Encoding) then
|
28
|
+
assert_equal "UTF-8", s.encoding.to_s, str.inspect
|
29
|
+
else
|
30
|
+
exp_err = "Skipping magic encoding comment\n" unless default
|
31
|
+
end
|
32
|
+
|
33
|
+
assert_equal "", out, str.inspect
|
34
|
+
assert_equal exp_err, err, str.inspect # HACK
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_handle_encoding_bom
|
38
|
+
# bom support, default to utf-8
|
39
|
+
assert_encoding "\xEF\xBB\xBF# blah"
|
40
|
+
# we force_encode to US-ASCII, then encode to UTF-8 so our lexer will work
|
41
|
+
assert_encoding "\xEF\xBB\xBF# encoding: US-ASCII"
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_handle_encoding_default
|
45
|
+
assert_encoding "blah", :default
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_handle_encoding_emacs
|
49
|
+
# Q: how many different ways can we screw these up? A: ALL OF THEM
|
50
|
+
|
51
|
+
assert_encoding "# - encoding: utf-8 -"
|
52
|
+
assert_encoding "# - encoding:utf-8"
|
53
|
+
assert_encoding "# -* coding: UTF-8 -*-"
|
54
|
+
assert_encoding "# -*- coding: UTF-8 -*-"
|
55
|
+
assert_encoding "# -*- coding: utf-8 -*"
|
56
|
+
assert_encoding "# -*- coding: utf-8 -*-"
|
57
|
+
assert_encoding "# -*- coding: utf-8; mode: ruby -*-"
|
58
|
+
assert_encoding "# -*- coding: utf-8; mode: ruby; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2"
|
59
|
+
assert_encoding "# -*- coding:utf-8; mode:ruby; -*-"
|
60
|
+
assert_encoding "# -*- encoding: UTF-8 -*-"
|
61
|
+
assert_encoding "# -*- encoding: utf-8 -*"
|
62
|
+
assert_encoding "# -*- encoding: utf-8 -*-"
|
63
|
+
assert_encoding "# -*- mode:ruby; coding:utf-8 -*-"
|
64
|
+
assert_encoding "# -*- ruby encoding: utf-8 -*-"
|
65
|
+
assert_encoding "# -- encoding: utf-8 --"
|
66
|
+
assert_encoding "# ~*~ encoding: utf-8 ~*~"
|
67
|
+
assert_encoding "#-*- coding: utf-8 -*-"
|
68
|
+
assert_encoding "#-*- coding:utf-8"
|
69
|
+
assert_encoding "#-- -*- mode: ruby; encoding: utf-8 -*-\n"
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_handle_encoding_wtf
|
73
|
+
assert_encoding "# coding : utf-8"
|
74
|
+
assert_encoding "# Ruby 1.9: encoding: utf-8"
|
75
|
+
assert_encoding "# Encoding: UTF-8 <-- required, please leave this in."
|
76
|
+
assert_encoding "# Encoding: UTF-8"
|
77
|
+
assert_encoding "# coding: utf-8"
|
78
|
+
assert_encoding "# coding:utf-8"
|
79
|
+
assert_encoding "# coding=utf-8"
|
80
|
+
assert_encoding "# encoding: ASCII"
|
81
|
+
assert_encoding "# encoding: ASCII-8BIT"
|
82
|
+
assert_encoding "# encoding: ISO-8859-1"
|
83
|
+
assert_encoding "# encoding: UTF-8"
|
84
|
+
assert_encoding "# encoding: ascii-8bit"
|
85
|
+
assert_encoding "# encoding: cp1252"
|
86
|
+
assert_encoding "# encoding: euc-jp -*-"
|
87
|
+
assert_encoding "# encoding: utf-8 # -*- ruby -*-"
|
88
|
+
assert_encoding "# encoding: utf-8 require 'github_api/utils/url'"
|
89
|
+
assert_encoding "# encoding: utf-8!"
|
90
|
+
assert_encoding "# encoding: utf-8"
|
91
|
+
assert_encoding "#<Encoding:UTF-8>"
|
92
|
+
assert_encoding "#Encoding: UTF-8"
|
93
|
+
assert_encoding "#coding:utf-8"
|
94
|
+
assert_encoding "#encoding: UTF-8!"
|
95
|
+
assert_encoding "#encoding: UTF-8"
|
96
|
+
assert_encoding "#encoding: cp1252"
|
97
|
+
assert_encoding "#encoding: sjis"
|
98
|
+
assert_encoding "#encoding: utf-8"
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_handle_encoding_normal
|
102
|
+
assert_encoding "# encoding: UTF-8"
|
103
|
+
assert_encoding "# encoding: UTF-8\r\n" # UGH I hate windoze
|
104
|
+
assert_encoding "# coding: UTF-8"
|
105
|
+
assert_encoding "# encoding = UTF-8"
|
106
|
+
assert_encoding "# coding = UTF-8"
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_handle_encoding_vim
|
110
|
+
assert_encoding "# vim: set fileencoding=utf-8 filetype=ruby ts=2 : "
|
111
|
+
assert_encoding "# vim: fileencoding=UTF-8 ft=ruby syn=ruby ts=2 sw=2 ai eol et si"
|
112
|
+
assert_encoding "# vim: fileencoding=UTF-8 nobomb sw=2 ts=2 et"
|
113
|
+
assert_encoding "# vim: filetype=ruby, fileencoding=UTF-8, tabsize=2, shiftwidth=2"
|
114
|
+
assert_encoding "# vim: set fileencoding=utf-8"
|
115
|
+
assert_encoding "# vim:encoding=UTF-8:"
|
116
|
+
assert_encoding "# vim:fileencoding=UTF-8:"
|
117
|
+
assert_encoding "# vim:set fileencoding=utf-8 filetype=ruby"
|
118
|
+
assert_encoding "# vim:set fileencoding=utf-8:"
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_stack_state
|
122
|
+
s.push true
|
123
|
+
s.push false
|
124
|
+
s.lexpop
|
125
|
+
assert_equal [false, true], s.stack
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_is_in_state
|
129
|
+
assert_equal false, s.is_in_state
|
130
|
+
s.push false
|
131
|
+
assert_equal false, s.is_in_state
|
132
|
+
s.push true
|
133
|
+
assert_equal true, s.is_in_state
|
134
|
+
s.push false
|
135
|
+
assert_equal false, s.is_in_state
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_lexpop
|
139
|
+
assert_equal [false], s.stack
|
140
|
+
s.push true
|
141
|
+
s.push false
|
142
|
+
assert_equal [false, true, false], s.stack
|
143
|
+
s.lexpop
|
144
|
+
assert_equal [false, true], s.stack
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_pop
|
148
|
+
assert_equal [false], s.stack
|
149
|
+
s.push true
|
150
|
+
assert_equal [false, true], s.stack
|
151
|
+
assert_equal true, s.pop
|
152
|
+
assert_equal [false], s.stack
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_push
|
156
|
+
assert_equal [false], s.stack
|
157
|
+
s.push true
|
158
|
+
s.push false
|
159
|
+
assert_equal [false, true, false], s.stack
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
class TestEnvironment < Minitest::Test
|
164
|
+
def deny t
|
165
|
+
assert ! t
|
166
|
+
end
|
167
|
+
|
168
|
+
def setup
|
169
|
+
@env = RubyParser::Legacy::RubyParserStuff::Environment.new
|
170
|
+
@env[:blah] = 42
|
171
|
+
assert_equal 42, @env[:blah]
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_var_scope_dynamic
|
175
|
+
@env.extend :dynamic
|
176
|
+
assert_equal 42, @env[:blah]
|
177
|
+
@env.unextend
|
178
|
+
assert_equal 42, @env[:blah]
|
179
|
+
end
|
180
|
+
|
181
|
+
def test_var_scope_static
|
182
|
+
@env.extend
|
183
|
+
assert_nil @env[:blah]
|
184
|
+
@env.unextend
|
185
|
+
assert_equal 42, @env[:blah]
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_all_dynamic
|
189
|
+
expected = { :blah => 42 }
|
190
|
+
|
191
|
+
@env.extend :dynamic
|
192
|
+
assert_equal expected, @env.all
|
193
|
+
@env.unextend
|
194
|
+
assert_equal expected, @env.all
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_all_static
|
198
|
+
@env.extend
|
199
|
+
expected = { }
|
200
|
+
assert_equal expected, @env.all
|
201
|
+
|
202
|
+
@env.unextend
|
203
|
+
expected = { :blah => 42 }
|
204
|
+
assert_equal expected, @env.all
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_all_static_deeper
|
208
|
+
expected0 = { :blah => 42 }
|
209
|
+
expected1 = { :blah => 42, :blah2 => 24 }
|
210
|
+
expected2 = { :blah => 27 }
|
211
|
+
|
212
|
+
@env.extend :dynamic
|
213
|
+
@env[:blah2] = 24
|
214
|
+
assert_equal expected1, @env.all
|
215
|
+
|
216
|
+
@env.extend
|
217
|
+
@env[:blah] = 27
|
218
|
+
assert_equal expected2, @env.all
|
219
|
+
|
220
|
+
@env.unextend
|
221
|
+
assert_equal expected1, @env.all
|
222
|
+
|
223
|
+
@env.unextend
|
224
|
+
assert_equal expected0, @env.all
|
225
|
+
end
|
226
|
+
end
|
metadata
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_parser-legacy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Davis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
|
+
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
+
GRYDY29tMB4XDTE4MTIwNDIxMzAxNFoXDTE5MTIwNDIxMzAxNFowRTETMBEGA1UE
|
16
|
+
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
|
+
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
19
|
+
taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
|
20
|
+
oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
|
21
|
+
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
22
|
+
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
|
+
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
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
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2019-03-15 00:00:00.000000000 Z
|
33
|
+
dependencies:
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: ruby_parser
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.13'
|
41
|
+
type: :runtime
|
42
|
+
prerelease: false
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.13'
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: minitest
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.11'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.11'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: oedipus_lex
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.5'
|
69
|
+
type: :development
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.5'
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: rdoc
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.0'
|
83
|
+
- - "<"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '7'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '4.0'
|
93
|
+
- - "<"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '7'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: racc
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.4.6
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.4.6
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: hoe
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '3.17'
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '3.17'
|
124
|
+
description: |-
|
125
|
+
ruby_parser-legacy includes the ruby 1.8 and 1.9 parsers from
|
126
|
+
ruby_parser (now removed) and plugs them into the existing system.
|
127
|
+
email:
|
128
|
+
- ryand-ruby@zenspider.com
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files:
|
132
|
+
- History.rdoc
|
133
|
+
- Manifest.txt
|
134
|
+
- README.rdoc
|
135
|
+
files:
|
136
|
+
- ".autotest"
|
137
|
+
- History.rdoc
|
138
|
+
- Manifest.txt
|
139
|
+
- README.rdoc
|
140
|
+
- Rakefile
|
141
|
+
- lib/ruby_parser/legacy.rb
|
142
|
+
- lib/ruby_parser/legacy/ruby18_parser.rb
|
143
|
+
- lib/ruby_parser/legacy/ruby18_parser.y
|
144
|
+
- lib/ruby_parser/legacy/ruby19_parser.rb
|
145
|
+
- lib/ruby_parser/legacy/ruby19_parser.y
|
146
|
+
- lib/ruby_parser/legacy/ruby_lexer.rb
|
147
|
+
- lib/ruby_parser/legacy/ruby_lexer.rex
|
148
|
+
- lib/ruby_parser/legacy/ruby_lexer.rex.rb
|
149
|
+
- lib/ruby_parser/legacy/ruby_parser.rb
|
150
|
+
- lib/ruby_parser/legacy/ruby_parser_extras.rb
|
151
|
+
- test/ruby_parser/test_legacy.rb
|
152
|
+
- test/ruby_parser/test_ruby_lexer.rb
|
153
|
+
- test/ruby_parser/test_ruby_parser.rb
|
154
|
+
- test/ruby_parser/test_ruby_parser_extras.rb
|
155
|
+
homepage: https://github.com/zenspider/ruby_parser-legacy
|
156
|
+
licenses:
|
157
|
+
- MIT
|
158
|
+
metadata: {}
|
159
|
+
post_install_message:
|
160
|
+
rdoc_options:
|
161
|
+
- "--main"
|
162
|
+
- README.rdoc
|
163
|
+
require_paths:
|
164
|
+
- lib
|
165
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
requirements: []
|
176
|
+
rubygems_version: 3.0.2
|
177
|
+
signing_key:
|
178
|
+
specification_version: 4
|
179
|
+
summary: ruby_parser-legacy includes the ruby 1.8 and 1.9 parsers from ruby_parser
|
180
|
+
(now removed) and plugs them into the existing system.
|
181
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|