synvert-core 0.27.3 → 0.30.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/CHANGELOG.md +9 -6
- data/lib/synvert/core/node_ext.rb +79 -41
- data/lib/synvert/core/rewriter.rb +2 -0
- data/lib/synvert/core/rewriter/action/replace_action.rb +4 -4
- data/lib/synvert/core/rewriter/any_value.rb +6 -0
- data/lib/synvert/core/rewriter/instance.rb +12 -7
- data/lib/synvert/core/rewriter/scope/goto_scope.rb +7 -4
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/node_ext_spec.rb +32 -0
- data/spec/synvert/core/rewriter/action/delete_action_spec.rb +3 -3
- data/spec/synvert/core/rewriter/action/replace_action_spec.rb +5 -5
- data/spec/synvert/core/rewriter/instance_spec.rb +2 -2
- data/spec/synvert/core/rewriter/scope/goto_scope_spec.rb +7 -8
- data/synvert-core.gemspec +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d60fb908af77ff2aab17f451c37a9f89e2b2af54a5b9aa24b082906286378158
|
|
4
|
+
data.tar.gz: a806d11b423f746ee2004b9467eb976132f1c3053b3986cb0e75e32291730dd6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c24af6d0aa4fc55d3a6f35dca86fbcdca5fb66b3e6ba6a8d6e0404da07e0418a2b922ec6d2b4550878c2e422db1befa1f41010c9904eda246753e088bc1c9ea2
|
|
7
|
+
data.tar.gz: c59443f7272ec4b13043fe79bf042b51d8de510143501fcf1d50e1a4fbc6d1d69cba79b007f6854550277bf98d74cef9f71c7aba15a7be6ffa34ea5c275e00da
|
data/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.30.0 (2021-04-26)
|
|
4
4
|
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* `goto_node` accepts multiple child node names
|
|
6
|
+
* Match any_value
|
|
7
7
|
|
|
8
|
-
## 0.
|
|
8
|
+
## 0.29.0 (2021-04-25)
|
|
9
9
|
|
|
10
|
-
*
|
|
10
|
+
* Make `child_name_range` support [:block, :pipe]
|
|
11
|
+
* Get key value for hash node
|
|
11
12
|
|
|
12
|
-
## 0.
|
|
13
|
+
## 0.28.0 (2021-04-07)
|
|
13
14
|
|
|
15
|
+
* Make `child_name_range` support all dsl nodes
|
|
16
|
+
* Make `replace` action support multi child names
|
|
14
17
|
* Fix `delete` action arguments
|
|
15
18
|
|
|
16
19
|
## 0.27.0 (2021-03-31)
|
|
@@ -101,9 +101,9 @@ module Parser::AST
|
|
|
101
101
|
def arguments
|
|
102
102
|
case type
|
|
103
103
|
when :def, :block
|
|
104
|
-
ArgumentsNode.new
|
|
104
|
+
ArgumentsNode.new(children[1])
|
|
105
105
|
when :defs
|
|
106
|
-
ArgumentsNode.new
|
|
106
|
+
ArgumentsNode.new(children[2])
|
|
107
107
|
when :send
|
|
108
108
|
children[2..-1]
|
|
109
109
|
when :defined?
|
|
@@ -203,7 +203,7 @@ module Parser::AST
|
|
|
203
203
|
def hash_value(key)
|
|
204
204
|
if :hash == type
|
|
205
205
|
value_node = children.find { |pair_node| pair_node.key.to_value == key }
|
|
206
|
-
value_node
|
|
206
|
+
value_node&.value
|
|
207
207
|
else
|
|
208
208
|
raise Synvert::Core::MethodNotSupported, "hash_value is not handled for #{debug_info}"
|
|
209
209
|
end
|
|
@@ -280,6 +280,31 @@ module Parser::AST
|
|
|
280
280
|
end
|
|
281
281
|
end
|
|
282
282
|
|
|
283
|
+
# Respond key value for hash node, e.g.
|
|
284
|
+
#
|
|
285
|
+
# Current node is s(:hash, s(:pair, s(:sym, :number), s(:int, 10)))
|
|
286
|
+
# node.number_value is 10
|
|
287
|
+
def method_missing(method_name, *args, &block)
|
|
288
|
+
if :hash == type && method_name.to_s.include?('_value')
|
|
289
|
+
key = method_name.to_s.sub('_value', '')
|
|
290
|
+
return hash_value(key.to_sym)&.to_value if key?(key.to_sym)
|
|
291
|
+
return hash_value(key.to_s)&.to_value if key?(key.to_s)
|
|
292
|
+
|
|
293
|
+
return nil
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
super
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def respond_to_missing?(method_name, *args)
|
|
300
|
+
if :hash == type && method_name.to_s.include?('_value')
|
|
301
|
+
key = method_name.to_s.sub('_value', '')
|
|
302
|
+
return true if key?(key.to_sym) || key?(key.to_s)
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
super
|
|
306
|
+
end
|
|
307
|
+
|
|
283
308
|
def to_s
|
|
284
309
|
if :mlhs == type
|
|
285
310
|
"(#{children.map(&:name).join(', ')})"
|
|
@@ -322,45 +347,56 @@ module Parser::AST
|
|
|
322
347
|
# @param [String] name of child node.
|
|
323
348
|
# @return [Parser::Source::Range] source range of child node.
|
|
324
349
|
def child_node_range(child_name)
|
|
325
|
-
case type
|
|
326
|
-
when
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
when
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
Parser::Source::Range.new('(string)', loc.operator.begin_pos - 4, loc.operator.begin_pos)
|
|
346
|
-
when :name
|
|
347
|
-
loc.name
|
|
348
|
-
when :arguments
|
|
349
|
-
Parser::Source::Range.new('(string)', arguments.first.loc.expression.begin_pos, arguments.last.loc.expression.end_pos) unless arguments.empty?
|
|
350
|
-
end
|
|
351
|
-
when :send
|
|
352
|
-
case child_name
|
|
353
|
-
when :receiver
|
|
354
|
-
receiver&.loc&.expression
|
|
355
|
-
when :dot
|
|
356
|
-
loc.dot
|
|
357
|
-
when :message
|
|
358
|
-
loc.operator ? Parser::Source::Range.new('(string)', loc.selector.begin_pos, loc.operator.end_pos) : loc.selector
|
|
359
|
-
when :arguments
|
|
360
|
-
Parser::Source::Range.new('(string)', arguments.first.loc.expression.begin_pos, arguments.last.loc.expression.end_pos) unless arguments.empty?
|
|
350
|
+
case [type, child_name]
|
|
351
|
+
when %i[block pipe]
|
|
352
|
+
Parser::Source::Range.new('(string)', arguments.loc.expression.begin_pos, arguments.loc.expression.end_pos)
|
|
353
|
+
when %i[class name]
|
|
354
|
+
loc.name
|
|
355
|
+
when %i[def name]
|
|
356
|
+
loc.name
|
|
357
|
+
when %i[defs name]
|
|
358
|
+
loc.name
|
|
359
|
+
when %i[defs dot]
|
|
360
|
+
loc.operator
|
|
361
|
+
when %i[defs self]
|
|
362
|
+
Parser::Source::Range.new('(string)', loc.operator.begin_pos - 4, loc.operator.begin_pos)
|
|
363
|
+
when %i[send dot]
|
|
364
|
+
loc.dot
|
|
365
|
+
when %i[send message]
|
|
366
|
+
if loc.operator
|
|
367
|
+
Parser::Source::Range.new('(string)', loc.selector.begin_pos, loc.operator.end_pos)
|
|
368
|
+
else
|
|
369
|
+
loc.selector
|
|
361
370
|
end
|
|
362
371
|
else
|
|
363
|
-
|
|
372
|
+
if respond_to?(child_name)
|
|
373
|
+
child_node = send(child_name)
|
|
374
|
+
return nil if child_node.nil?
|
|
375
|
+
|
|
376
|
+
if child_node.is_a?(Parser::AST::Node)
|
|
377
|
+
return(
|
|
378
|
+
Parser::Source::Range.new(
|
|
379
|
+
'(string)',
|
|
380
|
+
child_node.loc.expression.begin_pos,
|
|
381
|
+
child_node.loc.expression.end_pos
|
|
382
|
+
)
|
|
383
|
+
)
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
# arguments
|
|
387
|
+
return nil if child_node.empty?
|
|
388
|
+
|
|
389
|
+
return(
|
|
390
|
+
Parser::Source::Range.new(
|
|
391
|
+
'(string)',
|
|
392
|
+
child_node.first.loc.expression.begin_pos,
|
|
393
|
+
child_node.last.loc.expression.end_pos
|
|
394
|
+
)
|
|
395
|
+
)
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
raise Synvert::Core::MethodNotSupported,
|
|
399
|
+
"child_node_range is not handled for #{evaluated.inspect}, child_name: #{child_name}"
|
|
364
400
|
end
|
|
365
401
|
end
|
|
366
402
|
|
|
@@ -431,7 +467,7 @@ module Parser::AST
|
|
|
431
467
|
source
|
|
432
468
|
end
|
|
433
469
|
end
|
|
434
|
-
when String, Symbol
|
|
470
|
+
when String, Symbol, Integer, Float
|
|
435
471
|
evaluated
|
|
436
472
|
when NilClass
|
|
437
473
|
'nil'
|
|
@@ -491,6 +527,8 @@ module Parser::AST
|
|
|
491
527
|
:false == actual.type
|
|
492
528
|
when Parser::AST::Node
|
|
493
529
|
actual == expected
|
|
530
|
+
when Synvert::Core::Rewriter::AnyValue
|
|
531
|
+
!actual.nil?
|
|
494
532
|
else
|
|
495
533
|
raise Synvert::Core::MethodNotSupported, "#{expected.class} is not handled for match_value?"
|
|
496
534
|
end
|
|
@@ -44,6 +44,8 @@ module Synvert::Core
|
|
|
44
44
|
autoload :RubyVersion, 'synvert/core/rewriter/ruby_version'
|
|
45
45
|
autoload :GemSpec, 'synvert/core/rewriter/gem_spec'
|
|
46
46
|
|
|
47
|
+
autoload :AnyValue, 'synvert/core/rewriter/any_value'
|
|
48
|
+
|
|
47
49
|
class << self
|
|
48
50
|
# Execute the temporary rewriter without group and name.
|
|
49
51
|
#
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
module Synvert::Core
|
|
4
4
|
# ReplaceAction to replace child node with code.
|
|
5
5
|
class Rewriter::ReplaceAction < Rewriter::Action
|
|
6
|
-
def initialize(instance,
|
|
6
|
+
def initialize(instance, *selectors, with:)
|
|
7
7
|
@instance = instance
|
|
8
|
-
@
|
|
8
|
+
@selectors = selectors
|
|
9
9
|
@code = with
|
|
10
10
|
@node = @instance.current_node
|
|
11
11
|
end
|
|
@@ -14,14 +14,14 @@ module Synvert::Core
|
|
|
14
14
|
#
|
|
15
15
|
# @return [Integer] begin position.
|
|
16
16
|
def begin_pos
|
|
17
|
-
@node.child_node_range(
|
|
17
|
+
@selectors.map { |selector| @node.child_node_range(selector).begin_pos }.min
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# End position of code to replace.
|
|
21
21
|
#
|
|
22
22
|
# @return [Integer] end position.
|
|
23
23
|
def end_pos
|
|
24
|
-
@node.child_node_range(
|
|
24
|
+
@selectors.map { |selector| @node.child_node_range(selector).end_pos }.max
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# The rewritten source code.
|
|
@@ -181,10 +181,10 @@ module Synvert::Core
|
|
|
181
181
|
# Parse goto_node dsl, it creates a [Synvert::Core::Rewriter::GotoScope] to go to a child node,
|
|
182
182
|
# then continue operating on the child node.
|
|
183
183
|
#
|
|
184
|
-
# @param
|
|
184
|
+
# @param *child_node_names [Array] the name of the child nodes.
|
|
185
185
|
# @param block [Block] block code to continue operating on the matching nodes.
|
|
186
|
-
def goto_node(
|
|
187
|
-
Rewriter::GotoScope.new(self,
|
|
186
|
+
def goto_node(*child_node_names, &block)
|
|
187
|
+
Rewriter::GotoScope.new(self, *child_node_names, &block).process
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
# Parse if_exist_node dsl, it creates a [Synvert::Core::Rewriter::IfExistCondition] to check
|
|
@@ -252,12 +252,12 @@ module Synvert::Core
|
|
|
252
252
|
end
|
|
253
253
|
|
|
254
254
|
# Parse replace with dsl, it creates a [Synvert::Core::Rewriter::ReplaceAction] to
|
|
255
|
-
# replace child
|
|
255
|
+
# replace child nodes with code.
|
|
256
256
|
#
|
|
257
|
-
# @param
|
|
257
|
+
# @param selectors [Array<Symbol>] selector names of child node.
|
|
258
258
|
# @param with [String] code need to be replaced with.
|
|
259
|
-
def replace(
|
|
260
|
-
@actions << Rewriter::ReplaceAction.new(self,
|
|
259
|
+
def replace(*selectors, with:)
|
|
260
|
+
@actions << Rewriter::ReplaceAction.new(self, *selectors, with: with)
|
|
261
261
|
end
|
|
262
262
|
|
|
263
263
|
# Parse replace_erb_stmt_with_expr dsl, it creates a [Synvert::Core::Rewriter::ReplaceErbStmtWithExprAction] to
|
|
@@ -285,6 +285,11 @@ module Synvert::Core
|
|
|
285
285
|
@rewriter.add_warning Rewriter::Warning.new(self, message)
|
|
286
286
|
end
|
|
287
287
|
|
|
288
|
+
# Any value but nil.
|
|
289
|
+
def any_value
|
|
290
|
+
Rewriter::AnyValue.new
|
|
291
|
+
end
|
|
292
|
+
|
|
288
293
|
private
|
|
289
294
|
|
|
290
295
|
# It changes source code from bottom to top, and it can change source code twice at the same time,
|
|
@@ -6,11 +6,11 @@ module Synvert::Core
|
|
|
6
6
|
# Initialize a scope
|
|
7
7
|
#
|
|
8
8
|
# @param instance [Synvert::Core::Rewriter::Instance]
|
|
9
|
-
# @param
|
|
9
|
+
# @param *child_node_names [Array]
|
|
10
10
|
# @param block [Block]
|
|
11
|
-
def initialize(instance,
|
|
11
|
+
def initialize(instance, *child_node_names, &block)
|
|
12
12
|
@instance = instance
|
|
13
|
-
@
|
|
13
|
+
@child_node_names = child_node_names
|
|
14
14
|
@block = block
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -19,7 +19,10 @@ module Synvert::Core
|
|
|
19
19
|
current_node = @instance.current_node
|
|
20
20
|
return unless current_node
|
|
21
21
|
|
|
22
|
-
child_node =
|
|
22
|
+
child_node = current_node
|
|
23
|
+
@child_node_names.each do |child_node_name|
|
|
24
|
+
child_node = child_node_name.is_a?(Parser::AST::Node) ? child_node_name : child_node.send(child_node_name)
|
|
25
|
+
end
|
|
23
26
|
@instance.process_with_other_node child_node do
|
|
24
27
|
@instance.instance_eval(&@block)
|
|
25
28
|
end
|
data/lib/synvert/core/version.rb
CHANGED
|
@@ -333,6 +333,18 @@ describe Parser::AST::Node do
|
|
|
333
333
|
end
|
|
334
334
|
end
|
|
335
335
|
|
|
336
|
+
describe 'key value by method_missing' do
|
|
337
|
+
it 'gets for key value' do
|
|
338
|
+
node = parse('{:foo => :bar}')
|
|
339
|
+
expect(node.foo_value).to eq :bar
|
|
340
|
+
|
|
341
|
+
node = parse("{'foo' => 'bar'}")
|
|
342
|
+
expect(node.foo_value).to eq 'bar'
|
|
343
|
+
|
|
344
|
+
expect(node.bar_value).to be_nil
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
336
348
|
describe '#recursive_children' do
|
|
337
349
|
it 'iterates all children recursively' do
|
|
338
350
|
node = parse('class Synvert; def current_node; @node; end; end')
|
|
@@ -395,6 +407,26 @@ describe Parser::AST::Node do
|
|
|
395
407
|
end
|
|
396
408
|
|
|
397
409
|
describe '#child_node_range' do
|
|
410
|
+
context 'block node' do
|
|
411
|
+
it 'checks caller' do
|
|
412
|
+
node = parse('Factory.define :user do |user|; end')
|
|
413
|
+
range = node.child_node_range(:caller)
|
|
414
|
+
expect(range.to_range).to eq(0...20)
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
it 'checks arguments' do
|
|
418
|
+
node = parse('Factory.define :user do |user|; end')
|
|
419
|
+
range = node.child_node_range(:arguments)
|
|
420
|
+
expect(range.to_range).to eq(25...29)
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
it 'checks pipe' do
|
|
424
|
+
node = parse('Factory.define :user do |user|; end')
|
|
425
|
+
range = node.child_node_range(:pipe)
|
|
426
|
+
expect(range.to_range).to eq(24...30)
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
|
|
398
430
|
context 'class node' do
|
|
399
431
|
it 'checks name' do
|
|
400
432
|
node = parse('class Post < ActiveRecord::Base; end')
|
|
@@ -5,18 +5,18 @@ require 'spec_helper'
|
|
|
5
5
|
module Synvert::Core
|
|
6
6
|
describe Rewriter::DeleteAction do
|
|
7
7
|
subject {
|
|
8
|
-
source =
|
|
8
|
+
source = 'arr.map {}.flatten'
|
|
9
9
|
node = Parser::CurrentRuby.parse(source)
|
|
10
10
|
instance = double(current_node: node)
|
|
11
11
|
Rewriter::DeleteAction.new(instance, :dot, :message)
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
it 'gets begin_pos' do
|
|
15
|
-
expect(subject.begin_pos).to eq
|
|
15
|
+
expect(subject.begin_pos).to eq 'arr.map {}'.length
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it 'gets end_pos' do
|
|
19
|
-
expect(subject.end_pos).to eq
|
|
19
|
+
expect(subject.end_pos).to eq 'arr.map {}.flatten'.length
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it 'gets rewritten_code' do
|
|
@@ -6,22 +6,22 @@ module Synvert::Core
|
|
|
6
6
|
describe Rewriter::ReplaceAction do
|
|
7
7
|
context 'replace with single line' do
|
|
8
8
|
subject {
|
|
9
|
-
source =
|
|
9
|
+
source = 'FactoryBot.create(:user)'
|
|
10
10
|
node = Parser::CurrentRuby.parse(source)
|
|
11
11
|
instance = double(current_node: node)
|
|
12
|
-
Rewriter::ReplaceAction.new(instance, :message, with: '
|
|
12
|
+
Rewriter::ReplaceAction.new(instance, :receiver, :dot, :message, with: 'create')
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
it 'gets begin_pos' do
|
|
16
|
-
expect(subject.begin_pos).to eq
|
|
16
|
+
expect(subject.begin_pos).to eq 0
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it 'gets end_pos' do
|
|
20
|
-
expect(subject.end_pos).to eq
|
|
20
|
+
expect(subject.end_pos).to eq 'FactoryBot.create'.length
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'gets rewritten_code' do
|
|
24
|
-
expect(subject.rewritten_code).to eq '
|
|
24
|
+
expect(subject.rewritten_code).to eq 'create'
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -54,9 +54,9 @@ module Synvert::Core
|
|
|
54
54
|
it 'parses goto_node' do
|
|
55
55
|
scope = double
|
|
56
56
|
block = proc {}
|
|
57
|
-
expect(Rewriter::GotoScope).to receive(:new).with(instance, :caller, &block).and_return(scope)
|
|
57
|
+
expect(Rewriter::GotoScope).to receive(:new).with(instance, :caller, :receiver, &block).and_return(scope)
|
|
58
58
|
expect(scope).to receive(:process)
|
|
59
|
-
instance.goto_node(:caller, &block)
|
|
59
|
+
instance.goto_node(:caller, :receiver, &block)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it 'parses if_exist_node' do
|
|
@@ -8,12 +8,11 @@ module Synvert::Core
|
|
|
8
8
|
rewriter = Rewriter.new('foo', 'bar')
|
|
9
9
|
Rewriter::Instance.new(rewriter, 'file pattern')
|
|
10
10
|
}
|
|
11
|
-
let(:source) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
11
|
+
let(:source) { <<~EOS }
|
|
12
|
+
Factory.define :user do |user|
|
|
13
|
+
end
|
|
14
|
+
EOS
|
|
15
|
+
|
|
17
16
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
|
18
17
|
before do
|
|
19
18
|
Rewriter::Instance.reset
|
|
@@ -25,13 +24,13 @@ end
|
|
|
25
24
|
run = false
|
|
26
25
|
type_in_scope = nil
|
|
27
26
|
scope =
|
|
28
|
-
Rewriter::GotoScope.new instance, :caller do
|
|
27
|
+
Rewriter::GotoScope.new instance, :caller, :receiver do
|
|
29
28
|
run = true
|
|
30
29
|
type_in_scope = node.type
|
|
31
30
|
end
|
|
32
31
|
scope.process
|
|
33
32
|
expect(run).to be_truthy
|
|
34
|
-
expect(type_in_scope).to eq :
|
|
33
|
+
expect(type_in_scope).to eq :const
|
|
35
34
|
expect(instance.current_node.type).to eq :block
|
|
36
35
|
end
|
|
37
36
|
end
|
data/synvert-core.gemspec
CHANGED
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
|
|
22
22
|
spec.add_runtime_dependency "activesupport"
|
|
23
23
|
spec.add_runtime_dependency "erubis"
|
|
24
|
-
spec.add_runtime_dependency "parser"
|
|
24
|
+
spec.add_runtime_dependency "parser"
|
|
25
25
|
|
|
26
26
|
spec.add_development_dependency "bundler"
|
|
27
27
|
spec.add_development_dependency "guard"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: synvert-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Richard Huang
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-04-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -42,16 +42,16 @@ dependencies:
|
|
|
42
42
|
name: parser
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: bundler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,6 +154,7 @@ files:
|
|
|
154
154
|
- lib/synvert/core/rewriter/action/replace_action.rb
|
|
155
155
|
- lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
|
|
156
156
|
- lib/synvert/core/rewriter/action/replace_with_action.rb
|
|
157
|
+
- lib/synvert/core/rewriter/any_value.rb
|
|
157
158
|
- lib/synvert/core/rewriter/condition.rb
|
|
158
159
|
- lib/synvert/core/rewriter/condition/if_exist_condition.rb
|
|
159
160
|
- lib/synvert/core/rewriter/condition/if_only_exist_condition.rb
|
|
@@ -213,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
213
214
|
- !ruby/object:Gem::Version
|
|
214
215
|
version: '0'
|
|
215
216
|
requirements: []
|
|
216
|
-
rubygems_version: 3.1.
|
|
217
|
+
rubygems_version: 3.1.6
|
|
217
218
|
signing_key:
|
|
218
219
|
specification_version: 4
|
|
219
220
|
summary: convert ruby code to better syntax.
|