synvert-core 0.51.1 → 0.52.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 +3 -1
- data/lib/synvert/core/node_ext.rb +23 -22
- data/lib/synvert/core/rewriter/action/append_action.rb +3 -3
- data/lib/synvert/core/rewriter/action/insert_after_action.rb +1 -1
- data/lib/synvert/core/rewriter/action/prepend_action.rb +2 -2
- data/lib/synvert/core/rewriter/action/replace_with_action.rb +3 -4
- data/lib/synvert/core/rewriter/action/wrap_action.rb +1 -1
- data/lib/synvert/core/rewriter/scope/within_scope.rb +4 -3
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/node_ext_spec.rb +8 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 346c7567c1fec413a81afbe2ec5348f9cd66ac03ed08e8a6cf0fbf47ba049d08
|
4
|
+
data.tar.gz: c4a274d516c1301eb0be17777bd26a16561943077260508925cc3c5eae43e799
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee568051d2872db9f81c7d9a3609379eba74db82862ad55976b962e0c4b835dca9f7af74c67014554f6ee919edde2dab050a77fc248bc71ed2c4969009cede1d
|
7
|
+
data.tar.gz: 80dd4085d700581a02dd9507e88e0cbf28e978cbbd61d0e0906c73d2f713abbdd9393caec13d6854b3727d1b1fdd87a673d67323b4b315990a00f06fa23a1f44
|
data/CHANGELOG.md
CHANGED
@@ -322,10 +322,10 @@ module Parser::AST
|
|
322
322
|
loc.expression&.source
|
323
323
|
end
|
324
324
|
|
325
|
-
# Get the
|
325
|
+
# Get the column of current node.
|
326
326
|
#
|
327
|
-
# @return [Integer]
|
328
|
-
def
|
327
|
+
# @return [Integer] column.
|
328
|
+
def column
|
329
329
|
loc.expression.column
|
330
330
|
end
|
331
331
|
|
@@ -369,34 +369,35 @@ module Parser::AST
|
|
369
369
|
Parser::Source::Range.new('(string)', loc.begin.begin_pos, loc.end.end_pos)
|
370
370
|
end
|
371
371
|
else
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
child_node.loc.expression.begin_pos,
|
381
|
-
child_node.loc.expression.end_pos
|
382
|
-
)
|
383
|
-
)
|
372
|
+
child_node = self
|
373
|
+
child_name.to_s.split('.').each do |key|
|
374
|
+
if child_node.respond_to?(key)
|
375
|
+
child_node = child_node.send(key)
|
376
|
+
return nil if child_node.nil?
|
377
|
+
else
|
378
|
+
raise Synvert::Core::MethodNotSupported,
|
379
|
+
"child_node_range is not handled for #{child_node.debug_info}, child_name: #{child_name}"
|
384
380
|
end
|
381
|
+
end
|
385
382
|
|
386
|
-
|
387
|
-
return nil if child_node.empty?
|
388
|
-
|
383
|
+
if child_node.is_a?(Parser::AST::Node)
|
389
384
|
return(
|
390
385
|
Parser::Source::Range.new(
|
391
386
|
'(string)',
|
392
|
-
child_node.
|
393
|
-
child_node.
|
387
|
+
child_node.loc.expression.begin_pos,
|
388
|
+
child_node.loc.expression.end_pos
|
394
389
|
)
|
395
390
|
)
|
396
391
|
end
|
397
392
|
|
398
|
-
|
399
|
-
|
393
|
+
# arguments
|
394
|
+
return nil if child_node.empty?
|
395
|
+
|
396
|
+
Parser::Source::Range.new(
|
397
|
+
'(string)',
|
398
|
+
child_node.first.loc.expression.begin_pos,
|
399
|
+
child_node.last.loc.expression.end_pos
|
400
|
+
)
|
400
401
|
end
|
401
402
|
end
|
402
403
|
|
@@ -12,7 +12,7 @@ module Synvert::Core
|
|
12
12
|
if :begin == @node.type
|
13
13
|
@node.loc.expression.end_pos
|
14
14
|
else
|
15
|
-
@node.loc.expression.end_pos - @node.
|
15
|
+
@node.loc.expression.end_pos - @node.column - END_LENGTH
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -31,9 +31,9 @@ module Synvert::Core
|
|
31
31
|
# @return [String] n times whitesphace
|
32
32
|
def indent(node)
|
33
33
|
if %i[block class].include? node.type
|
34
|
-
' ' * (node.
|
34
|
+
' ' * (node.column + DEFAULT_INDENT)
|
35
35
|
else
|
36
|
-
' ' * node.
|
36
|
+
' ' * node.column
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -38,9 +38,9 @@ module Synvert::Core
|
|
38
38
|
# @return [String] n times whitesphace
|
39
39
|
def indent(node)
|
40
40
|
if %i[block class].include? node.type
|
41
|
-
' ' * (node.
|
41
|
+
' ' * (node.column + DEFAULT_INDENT)
|
42
42
|
else
|
43
|
-
' ' * node.
|
43
|
+
' ' * node.column
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -24,7 +24,7 @@ module Synvert::Core
|
|
24
24
|
if rewritten_source.include?("\n")
|
25
25
|
new_code = []
|
26
26
|
rewritten_source.split("\n").each_with_index do |line, index|
|
27
|
-
new_code << (index == 0 ? line : indent
|
27
|
+
new_code << (index == 0 ? line : indent + line)
|
28
28
|
end
|
29
29
|
new_code.join("\n")
|
30
30
|
else
|
@@ -36,10 +36,9 @@ module Synvert::Core
|
|
36
36
|
|
37
37
|
# Indent of the node
|
38
38
|
#
|
39
|
-
# @param node [Parser::AST::Node]
|
40
39
|
# @return [String] n times whitesphace
|
41
|
-
def indent
|
42
|
-
' ' * node.
|
40
|
+
def indent
|
41
|
+
' ' * @node.column
|
43
42
|
end
|
44
43
|
end
|
45
44
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Synvert::Core
|
4
|
-
# WithinScope finds out nodes which match rules, then
|
4
|
+
# WithinScope finds out nodes which match rules, then changes its scope to matching node.
|
5
5
|
class Rewriter::WithinScope < Rewriter::Scope
|
6
6
|
# Initialize a scope
|
7
7
|
#
|
@@ -16,8 +16,9 @@ module Synvert::Core
|
|
16
16
|
@block = block
|
17
17
|
end
|
18
18
|
|
19
|
-
# Find out the matching nodes.
|
20
|
-
#
|
19
|
+
# Find out the matching nodes.
|
20
|
+
# It checks the current node and iterates all child nodes,
|
21
|
+
# then run the block code on each matching node.
|
21
22
|
def process
|
22
23
|
current_node = @instance.current_node
|
23
24
|
return unless current_node
|
data/lib/synvert/core/version.rb
CHANGED
@@ -359,10 +359,10 @@ describe Parser::AST::Node do
|
|
359
359
|
end
|
360
360
|
end
|
361
361
|
|
362
|
-
describe '#
|
362
|
+
describe '#column' do
|
363
363
|
it 'gets column number' do
|
364
364
|
node = parse(' FactoryGirl.create :post')
|
365
|
-
expect(node.
|
365
|
+
expect(node.column).to eq 2
|
366
366
|
end
|
367
367
|
end
|
368
368
|
|
@@ -520,6 +520,12 @@ describe Parser::AST::Node do
|
|
520
520
|
range = node.child_node_range(:pipes)
|
521
521
|
expect(range.to_range).to eq(24...30)
|
522
522
|
end
|
523
|
+
|
524
|
+
it 'checks caller.receiver' do
|
525
|
+
node = parse('Factory.define :user do |user|; end')
|
526
|
+
range = node.child_node_range('caller.receiver')
|
527
|
+
expect(range.to_range).to eq(0...7)
|
528
|
+
end
|
523
529
|
end
|
524
530
|
|
525
531
|
context 'class node' do
|
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.52.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-08-
|
11
|
+
date: 2021-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|