parser 2.7.1.1 → 3.0.2.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.
- checksums.yaml +4 -4
- data/lib/parser.rb +1 -0
- data/lib/parser/all.rb +2 -0
- data/lib/parser/ast/processor.rb +5 -0
- data/lib/parser/base.rb +7 -5
- data/lib/parser/builders/default.rb +263 -23
- data/lib/parser/context.rb +5 -0
- data/lib/parser/current.rb +24 -6
- data/lib/parser/current_arg_stack.rb +5 -2
- data/lib/parser/diagnostic.rb +1 -1
- data/lib/parser/diagnostic/engine.rb +1 -2
- data/lib/parser/lexer.rb +887 -803
- data/lib/parser/macruby.rb +2214 -2189
- data/lib/parser/max_numparam_stack.rb +13 -5
- data/lib/parser/messages.rb +18 -0
- data/lib/parser/meta.rb +6 -5
- data/lib/parser/ruby18.rb +9 -3
- data/lib/parser/ruby19.rb +2297 -2289
- data/lib/parser/ruby20.rb +2413 -2397
- data/lib/parser/ruby21.rb +2419 -2411
- data/lib/parser/ruby22.rb +2468 -2460
- data/lib/parser/ruby23.rb +2452 -2452
- data/lib/parser/ruby24.rb +2435 -2430
- data/lib/parser/ruby25.rb +2220 -2214
- data/lib/parser/ruby26.rb +2220 -2214
- data/lib/parser/ruby27.rb +3715 -3615
- data/lib/parser/ruby28.rb +8047 -0
- data/lib/parser/ruby30.rb +8060 -0
- data/lib/parser/ruby31.rb +8226 -0
- data/lib/parser/rubymotion.rb +2190 -2182
- data/lib/parser/runner.rb +31 -2
- data/lib/parser/runner/ruby_rewrite.rb +2 -2
- data/lib/parser/source/buffer.rb +53 -28
- data/lib/parser/source/comment.rb +14 -1
- data/lib/parser/source/comment/associator.rb +31 -8
- data/lib/parser/source/map/method_definition.rb +25 -0
- data/lib/parser/source/range.rb +10 -3
- data/lib/parser/source/tree_rewriter.rb +100 -10
- data/lib/parser/source/tree_rewriter/action.rb +114 -21
- data/lib/parser/static_environment.rb +4 -0
- data/lib/parser/tree_rewriter.rb +1 -2
- data/lib/parser/variables_stack.rb +4 -0
- data/lib/parser/version.rb +1 -1
- data/parser.gemspec +3 -18
- metadata +17 -98
- data/.gitignore +0 -33
- data/.travis.yml +0 -42
- data/.yardopts +0 -21
- data/CHANGELOG.md +0 -1075
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -10
- data/README.md +0 -309
- data/Rakefile +0 -166
- data/ci/run_rubocop_specs +0 -14
- data/doc/AST_FORMAT.md +0 -2180
- data/doc/CUSTOMIZATION.md +0 -37
- data/doc/INTERNALS.md +0 -21
- data/doc/css/.gitkeep +0 -0
- data/doc/css/common.css +0 -68
- data/lib/parser/lexer.rl +0 -2536
- data/lib/parser/macruby.y +0 -2198
- data/lib/parser/ruby18.y +0 -1934
- data/lib/parser/ruby19.y +0 -2175
- data/lib/parser/ruby20.y +0 -2353
- data/lib/parser/ruby21.y +0 -2357
- data/lib/parser/ruby22.y +0 -2364
- data/lib/parser/ruby23.y +0 -2370
- data/lib/parser/ruby24.y +0 -2408
- data/lib/parser/ruby25.y +0 -2405
- data/lib/parser/ruby26.y +0 -2413
- data/lib/parser/ruby27.y +0 -2941
- data/lib/parser/rubymotion.y +0 -2182
- data/test/bug_163/fixtures/input.rb +0 -5
- data/test/bug_163/fixtures/output.rb +0 -5
- data/test/bug_163/rewriter.rb +0 -20
- data/test/helper.rb +0 -60
- data/test/parse_helper.rb +0 -319
- data/test/racc_coverage_helper.rb +0 -133
- data/test/test_base.rb +0 -31
- data/test/test_current.rb +0 -29
- data/test/test_diagnostic.rb +0 -96
- data/test/test_diagnostic_engine.rb +0 -62
- data/test/test_encoding.rb +0 -99
- data/test/test_lexer.rb +0 -3608
- data/test/test_lexer_stack_state.rb +0 -78
- data/test/test_parse_helper.rb +0 -80
- data/test/test_parser.rb +0 -9430
- data/test/test_runner_parse.rb +0 -35
- data/test/test_runner_rewrite.rb +0 -47
- data/test/test_source_buffer.rb +0 -162
- data/test/test_source_comment.rb +0 -36
- data/test/test_source_comment_associator.rb +0 -367
- data/test/test_source_map.rb +0 -15
- data/test/test_source_range.rb +0 -187
- data/test/test_source_rewriter.rb +0 -541
- data/test/test_source_rewriter_action.rb +0 -46
- data/test/test_source_tree_rewriter.rb +0 -253
- data/test/test_static_environment.rb +0 -45
- data/test/using_tree_rewriter/fixtures/input.rb +0 -3
- data/test/using_tree_rewriter/fixtures/output.rb +0 -3
- data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -7,7 +7,7 @@ module Parser
|
|
7
7
|
#
|
8
8
|
# Actions are arranged in a tree and get combined so that:
|
9
9
|
# children are strictly contained by their parent
|
10
|
-
# sibblings all disjoint from one another
|
10
|
+
# sibblings all disjoint from one another and ordered
|
11
11
|
# only actions with replacement==nil may have children
|
12
12
|
#
|
13
13
|
class TreeRewriter::Action
|
@@ -41,15 +41,54 @@ module Parser
|
|
41
41
|
reps = []
|
42
42
|
reps << [@range.begin, @insert_before] unless @insert_before.empty?
|
43
43
|
reps << [@range, @replacement] if @replacement
|
44
|
-
reps.concat(@children.
|
44
|
+
reps.concat(@children.flat_map(&:ordered_replacements))
|
45
45
|
reps << [@range.end, @insert_after] unless @insert_after.empty?
|
46
46
|
reps
|
47
47
|
end
|
48
48
|
|
49
|
+
def nested_actions
|
50
|
+
actions = []
|
51
|
+
actions << [:wrap, @range, @insert_before, @insert_after] if !@insert_before.empty? ||
|
52
|
+
!@insert_after.empty?
|
53
|
+
actions << [:replace, @range, @replacement] if @replacement
|
54
|
+
actions.concat(@children.flat_map(&:nested_actions))
|
55
|
+
end
|
56
|
+
|
49
57
|
def insertion?
|
50
58
|
!insert_before.empty? || !insert_after.empty? || (replacement && !replacement.empty?)
|
51
59
|
end
|
52
60
|
|
61
|
+
##
|
62
|
+
# A root action has its range set to the whole source range, even
|
63
|
+
# though it typically do not act on that range.
|
64
|
+
# This method returns the action as if it was a child action with
|
65
|
+
# its range contracted.
|
66
|
+
# @return [Action]
|
67
|
+
def contract
|
68
|
+
raise 'Empty actions can not be contracted' if empty?
|
69
|
+
return self if insertion?
|
70
|
+
range = @range.with(
|
71
|
+
begin_pos: children.first.range.begin_pos,
|
72
|
+
end_pos: children.last.range.end_pos,
|
73
|
+
)
|
74
|
+
with(range: range)
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# @return [Action] that has been moved to the given source_buffer and with the given offset
|
79
|
+
# No check is done on validity of resulting range.
|
80
|
+
def moved(source_buffer, offset)
|
81
|
+
moved_range = ::Parser::Source::Range.new(
|
82
|
+
source_buffer,
|
83
|
+
@range.begin_pos + offset,
|
84
|
+
@range.end_pos + offset
|
85
|
+
)
|
86
|
+
with(
|
87
|
+
range: moved_range,
|
88
|
+
children: children.map { |child| child.moved(source_buffer, offset) }
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
53
92
|
protected
|
54
93
|
|
55
94
|
attr_reader :children
|
@@ -69,24 +108,24 @@ module Parser
|
|
69
108
|
end
|
70
109
|
|
71
110
|
def place_in_hierarchy(action)
|
72
|
-
family =
|
111
|
+
family = analyse_hierarchy(action)
|
73
112
|
|
74
113
|
if family[:fusible]
|
75
|
-
fuse_deletions(action, family[:fusible], [*family[:
|
114
|
+
fuse_deletions(action, family[:fusible], [*family[:sibbling_left], *family[:child], *family[:sibbling_right]])
|
76
115
|
else
|
77
116
|
extra_sibbling = if family[:parent] # action should be a descendant of one of the children
|
78
|
-
family[:parent]
|
117
|
+
family[:parent].do_combine(action)
|
79
118
|
elsif family[:child] # or it should become the parent of some of the children,
|
80
119
|
action.with(children: family[:child], enforcer: @enforcer)
|
81
120
|
.combine_children(action.children)
|
82
121
|
else # or else it should become an additional child
|
83
122
|
action
|
84
123
|
end
|
85
|
-
with(children: [*family[:
|
124
|
+
with(children: [*family[:sibbling_left], extra_sibbling, *family[:sibbling_right]])
|
86
125
|
end
|
87
126
|
end
|
88
127
|
|
89
|
-
# Assumes more_children all contained within
|
128
|
+
# Assumes `more_children` all contained within `@range`
|
90
129
|
def combine_children(more_children)
|
91
130
|
more_children.inject(self) do |parent, new_child|
|
92
131
|
parent.place_in_hierarchy(new_child)
|
@@ -100,22 +139,76 @@ module Parser
|
|
100
139
|
without_fusible.do_combine(fused_deletion)
|
101
140
|
end
|
102
141
|
|
103
|
-
#
|
104
|
-
#
|
105
|
-
#
|
106
|
-
def
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
142
|
+
# Similar to @children.bsearch_index || size
|
143
|
+
# except allows for a starting point
|
144
|
+
# and `bsearch_index` is only Ruby 2.3+
|
145
|
+
def bsearch_child_index(from = 0)
|
146
|
+
size = @children.size
|
147
|
+
(from...size).bsearch { |i| yield @children[i] } || size
|
148
|
+
end
|
149
|
+
|
150
|
+
# Returns the children in a hierarchy with respect to `action`:
|
151
|
+
# :sibbling_left, sibbling_right (for those that are disjoint from `action`)
|
152
|
+
# :parent (in case one of our children contains `action`)
|
153
|
+
# :child (in case `action` strictly contains some of our children)
|
154
|
+
# :fusible (in case `action` overlaps some children but they can be fused in one deletion)
|
155
|
+
# or raises a `CloberingError`
|
156
|
+
# In case a child has equal range to `action`, it is returned as `:parent`
|
157
|
+
# Reminder: an empty range 1...1 is considered disjoint from 1...10
|
158
|
+
def analyse_hierarchy(action)
|
159
|
+
r = action.range
|
160
|
+
# left_index is the index of the first child that isn't completely to the left of action
|
161
|
+
left_index = bsearch_child_index { |child| child.range.end_pos > r.begin_pos }
|
162
|
+
# right_index is the index of the first child that is completely on the right of action
|
163
|
+
start = left_index == 0 ? 0 : left_index - 1 # See "corner case" below for reason of -1
|
164
|
+
right_index = bsearch_child_index(start) { |child| child.range.begin_pos >= r.end_pos }
|
165
|
+
center = right_index - left_index
|
166
|
+
case center
|
167
|
+
when 0
|
168
|
+
# All children are disjoint from action, nothing else to do
|
169
|
+
when -1
|
170
|
+
# Corner case: if a child has empty range == action's range
|
171
|
+
# then it will appear to be both disjoint and to the left of action,
|
172
|
+
# as well as disjoint and to the right of action.
|
173
|
+
# Since ranges are equal, we return it as parent
|
174
|
+
left_index -= 1 # Fix indices, as otherwise this child would be
|
175
|
+
right_index += 1 # considered as a sibbling (both left and right!)
|
176
|
+
parent = @children[left_index]
|
116
177
|
else
|
117
|
-
@
|
178
|
+
overlap_left = @children[left_index].range.begin_pos <=> r.begin_pos
|
179
|
+
overlap_right = @children[right_index-1].range.end_pos <=> r.end_pos
|
180
|
+
|
181
|
+
# For one child to be the parent of action, we must have:
|
182
|
+
if center == 1 && overlap_left <= 0 && overlap_right >= 0
|
183
|
+
parent = @children[left_index]
|
184
|
+
else
|
185
|
+
# Otherwise consider all non disjoint elements (center) to be contained...
|
186
|
+
contained = @children[left_index...right_index]
|
187
|
+
fusible = check_fusible(action,
|
188
|
+
(contained.shift if overlap_left < 0), # ... but check first and last one
|
189
|
+
(contained.pop if overlap_right > 0) # ... for overlaps
|
190
|
+
)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
{
|
195
|
+
parent: parent,
|
196
|
+
sibbling_left: @children[0...left_index],
|
197
|
+
sibbling_right: @children[right_index...@children.size],
|
198
|
+
fusible: fusible,
|
199
|
+
child: contained,
|
200
|
+
}
|
201
|
+
end
|
202
|
+
|
203
|
+
# @param [Array(Action | nil)] fusible
|
204
|
+
def check_fusible(action, *fusible)
|
205
|
+
fusible.compact!
|
206
|
+
return if fusible.empty?
|
207
|
+
fusible.each do |child|
|
208
|
+
kind = action.insertion? || child.insertion? ? :crossing_insertions : :crossing_deletions
|
209
|
+
@enforcer.call(kind) { {range: action.range, conflict: child.range} }
|
118
210
|
end
|
211
|
+
fusible
|
119
212
|
end
|
120
213
|
|
121
214
|
# Assumes action.range == range && action.children.empty?
|
data/lib/parser/tree_rewriter.rb
CHANGED
@@ -28,8 +28,7 @@ module Parser
|
|
28
28
|
# EOF
|
29
29
|
#
|
30
30
|
# ast = Parser::CurrentRuby.parse code
|
31
|
-
# buffer = Parser::Source::Buffer.new('(example)')
|
32
|
-
# buffer.source = code
|
31
|
+
# buffer = Parser::Source::Buffer.new('(example)', source: code)
|
33
32
|
# rewriter = RemoveDo.new
|
34
33
|
#
|
35
34
|
# # Rewrite the AST, returns a String with the new form.
|
data/lib/parser/version.rb
CHANGED
data/parser.gemspec
CHANGED
@@ -20,31 +20,16 @@ Gem::Specification.new do |spec|
|
|
20
20
|
'source_code_uri' => "https://github.com/whitequark/parser/tree/v#{spec.version}"
|
21
21
|
}
|
22
22
|
|
23
|
-
spec.files =
|
24
|
-
lib/parser/lexer.rb
|
25
|
-
lib/parser/ruby18.rb
|
26
|
-
lib/parser/ruby19.rb
|
27
|
-
lib/parser/ruby20.rb
|
28
|
-
lib/parser/ruby21.rb
|
29
|
-
lib/parser/ruby22.rb
|
30
|
-
lib/parser/ruby23.rb
|
31
|
-
lib/parser/ruby24.rb
|
32
|
-
lib/parser/ruby25.rb
|
33
|
-
lib/parser/ruby26.rb
|
34
|
-
lib/parser/ruby27.rb
|
35
|
-
lib/parser/macruby.rb
|
36
|
-
lib/parser/rubymotion.rb
|
37
|
-
)
|
23
|
+
spec.files = Dir['bin/*', 'lib/**/*.rb', 'parser.gemspec', 'LICENSE.txt']
|
38
24
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
39
|
-
spec.test_files = spec.files.grep(%r{^test/})
|
40
25
|
spec.require_paths = ['lib']
|
41
26
|
|
42
27
|
spec.required_ruby_version = '>= 2.0.0'
|
43
28
|
|
44
|
-
spec.add_dependency 'ast', '~> 2.4.
|
29
|
+
spec.add_dependency 'ast', '~> 2.4.1'
|
45
30
|
|
46
31
|
spec.add_development_dependency 'bundler', '>= 1.15', '< 3.0.0'
|
47
|
-
spec.add_development_dependency 'rake', '~>
|
32
|
+
spec.add_development_dependency 'rake', '~> 13.0.1'
|
48
33
|
spec.add_development_dependency 'racc', '= 1.4.15'
|
49
34
|
spec.add_development_dependency 'cliver', '~> 0.3.2'
|
50
35
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whitequark
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.4.
|
19
|
+
version: 2.4.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.4.
|
26
|
+
version: 2.4.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 13.0.1
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
60
|
+
version: 13.0.1
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: racc
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,23 +165,9 @@ executables:
|
|
165
165
|
extensions: []
|
166
166
|
extra_rdoc_files: []
|
167
167
|
files:
|
168
|
-
- ".gitignore"
|
169
|
-
- ".travis.yml"
|
170
|
-
- ".yardopts"
|
171
|
-
- CHANGELOG.md
|
172
|
-
- CONTRIBUTING.md
|
173
|
-
- Gemfile
|
174
168
|
- LICENSE.txt
|
175
|
-
- README.md
|
176
|
-
- Rakefile
|
177
169
|
- bin/ruby-parse
|
178
170
|
- bin/ruby-rewrite
|
179
|
-
- ci/run_rubocop_specs
|
180
|
-
- doc/AST_FORMAT.md
|
181
|
-
- doc/CUSTOMIZATION.md
|
182
|
-
- doc/INTERNALS.md
|
183
|
-
- doc/css/.gitkeep
|
184
|
-
- doc/css/common.css
|
185
171
|
- lib/gauntlet_parser.rb
|
186
172
|
- lib/parser.rb
|
187
173
|
- lib/parser/all.rb
|
@@ -198,39 +184,29 @@ files:
|
|
198
184
|
- lib/parser/diagnostic.rb
|
199
185
|
- lib/parser/diagnostic/engine.rb
|
200
186
|
- lib/parser/lexer.rb
|
201
|
-
- lib/parser/lexer.rl
|
202
187
|
- lib/parser/lexer/dedenter.rb
|
203
188
|
- lib/parser/lexer/explanation.rb
|
204
189
|
- lib/parser/lexer/literal.rb
|
205
190
|
- lib/parser/lexer/stack_state.rb
|
206
191
|
- lib/parser/macruby.rb
|
207
|
-
- lib/parser/macruby.y
|
208
192
|
- lib/parser/max_numparam_stack.rb
|
209
193
|
- lib/parser/messages.rb
|
210
194
|
- lib/parser/meta.rb
|
211
195
|
- lib/parser/rewriter.rb
|
212
196
|
- lib/parser/ruby18.rb
|
213
|
-
- lib/parser/ruby18.y
|
214
197
|
- lib/parser/ruby19.rb
|
215
|
-
- lib/parser/ruby19.y
|
216
198
|
- lib/parser/ruby20.rb
|
217
|
-
- lib/parser/ruby20.y
|
218
199
|
- lib/parser/ruby21.rb
|
219
|
-
- lib/parser/ruby21.y
|
220
200
|
- lib/parser/ruby22.rb
|
221
|
-
- lib/parser/ruby22.y
|
222
201
|
- lib/parser/ruby23.rb
|
223
|
-
- lib/parser/ruby23.y
|
224
202
|
- lib/parser/ruby24.rb
|
225
|
-
- lib/parser/ruby24.y
|
226
203
|
- lib/parser/ruby25.rb
|
227
|
-
- lib/parser/ruby25.y
|
228
204
|
- lib/parser/ruby26.rb
|
229
|
-
- lib/parser/ruby26.y
|
230
205
|
- lib/parser/ruby27.rb
|
231
|
-
- lib/parser/
|
206
|
+
- lib/parser/ruby28.rb
|
207
|
+
- lib/parser/ruby30.rb
|
208
|
+
- lib/parser/ruby31.rb
|
232
209
|
- lib/parser/rubymotion.rb
|
233
|
-
- lib/parser/rubymotion.y
|
234
210
|
- lib/parser/runner.rb
|
235
211
|
- lib/parser/runner/ruby_parse.rb
|
236
212
|
- lib/parser/runner/ruby_rewrite.rb
|
@@ -246,6 +222,7 @@ files:
|
|
246
222
|
- lib/parser/source/map/heredoc.rb
|
247
223
|
- lib/parser/source/map/index.rb
|
248
224
|
- lib/parser/source/map/keyword.rb
|
225
|
+
- lib/parser/source/map/method_definition.rb
|
249
226
|
- lib/parser/source/map/objc_kwarg.rb
|
250
227
|
- lib/parser/source/map/operator.rb
|
251
228
|
- lib/parser/source/map/rescue_body.rb
|
@@ -263,44 +240,15 @@ files:
|
|
263
240
|
- lib/parser/variables_stack.rb
|
264
241
|
- lib/parser/version.rb
|
265
242
|
- parser.gemspec
|
266
|
-
- test/bug_163/fixtures/input.rb
|
267
|
-
- test/bug_163/fixtures/output.rb
|
268
|
-
- test/bug_163/rewriter.rb
|
269
|
-
- test/helper.rb
|
270
|
-
- test/parse_helper.rb
|
271
|
-
- test/racc_coverage_helper.rb
|
272
|
-
- test/test_base.rb
|
273
|
-
- test/test_current.rb
|
274
|
-
- test/test_diagnostic.rb
|
275
|
-
- test/test_diagnostic_engine.rb
|
276
|
-
- test/test_encoding.rb
|
277
|
-
- test/test_lexer.rb
|
278
|
-
- test/test_lexer_stack_state.rb
|
279
|
-
- test/test_parse_helper.rb
|
280
|
-
- test/test_parser.rb
|
281
|
-
- test/test_runner_parse.rb
|
282
|
-
- test/test_runner_rewrite.rb
|
283
|
-
- test/test_source_buffer.rb
|
284
|
-
- test/test_source_comment.rb
|
285
|
-
- test/test_source_comment_associator.rb
|
286
|
-
- test/test_source_map.rb
|
287
|
-
- test/test_source_range.rb
|
288
|
-
- test/test_source_rewriter.rb
|
289
|
-
- test/test_source_rewriter_action.rb
|
290
|
-
- test/test_source_tree_rewriter.rb
|
291
|
-
- test/test_static_environment.rb
|
292
|
-
- test/using_tree_rewriter/fixtures/input.rb
|
293
|
-
- test/using_tree_rewriter/fixtures/output.rb
|
294
|
-
- test/using_tree_rewriter/using_tree_rewriter.rb
|
295
243
|
homepage: https://github.com/whitequark/parser
|
296
244
|
licenses:
|
297
245
|
- MIT
|
298
246
|
metadata:
|
299
247
|
bug_tracker_uri: https://github.com/whitequark/parser/issues
|
300
|
-
changelog_uri: https://github.com/whitequark/parser/blob/
|
301
|
-
documentation_uri: https://www.rubydoc.info/gems/parser/
|
302
|
-
source_code_uri: https://github.com/whitequark/parser/tree/
|
303
|
-
post_install_message:
|
248
|
+
changelog_uri: https://github.com/whitequark/parser/blob/v3.0.2.0/CHANGELOG.md
|
249
|
+
documentation_uri: https://www.rubydoc.info/gems/parser/3.0.2.0
|
250
|
+
source_code_uri: https://github.com/whitequark/parser/tree/v3.0.2.0
|
251
|
+
post_install_message:
|
304
252
|
rdoc_options: []
|
305
253
|
require_paths:
|
306
254
|
- lib
|
@@ -316,36 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
264
|
version: '0'
|
317
265
|
requirements: []
|
318
266
|
rubygems_version: 3.0.6
|
319
|
-
signing_key:
|
267
|
+
signing_key:
|
320
268
|
specification_version: 4
|
321
269
|
summary: A Ruby parser written in pure Ruby.
|
322
|
-
test_files:
|
323
|
-
- test/bug_163/fixtures/input.rb
|
324
|
-
- test/bug_163/fixtures/output.rb
|
325
|
-
- test/bug_163/rewriter.rb
|
326
|
-
- test/helper.rb
|
327
|
-
- test/parse_helper.rb
|
328
|
-
- test/racc_coverage_helper.rb
|
329
|
-
- test/test_base.rb
|
330
|
-
- test/test_current.rb
|
331
|
-
- test/test_diagnostic.rb
|
332
|
-
- test/test_diagnostic_engine.rb
|
333
|
-
- test/test_encoding.rb
|
334
|
-
- test/test_lexer.rb
|
335
|
-
- test/test_lexer_stack_state.rb
|
336
|
-
- test/test_parse_helper.rb
|
337
|
-
- test/test_parser.rb
|
338
|
-
- test/test_runner_parse.rb
|
339
|
-
- test/test_runner_rewrite.rb
|
340
|
-
- test/test_source_buffer.rb
|
341
|
-
- test/test_source_comment.rb
|
342
|
-
- test/test_source_comment_associator.rb
|
343
|
-
- test/test_source_map.rb
|
344
|
-
- test/test_source_range.rb
|
345
|
-
- test/test_source_rewriter.rb
|
346
|
-
- test/test_source_rewriter_action.rb
|
347
|
-
- test/test_source_tree_rewriter.rb
|
348
|
-
- test/test_static_environment.rb
|
349
|
-
- test/using_tree_rewriter/fixtures/input.rb
|
350
|
-
- test/using_tree_rewriter/fixtures/output.rb
|
351
|
-
- test/using_tree_rewriter/using_tree_rewriter.rb
|
270
|
+
test_files: []
|