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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3a46917323dc90674ad343c09d06621ac8817a3700c4b4ff205dbfb96a4ad7f
4
- data.tar.gz: 1a72f62df4f1711af2b17e2ac2c556ac57bb5cf984cfc9f00d74ce4c7d540442
3
+ metadata.gz: 346c7567c1fec413a81afbe2ec5348f9cd66ac03ed08e8a6cf0fbf47ba049d08
4
+ data.tar.gz: c4a274d516c1301eb0be17777bd26a16561943077260508925cc3c5eae43e799
5
5
  SHA512:
6
- metadata.gz: 8a150ae7cd1eef26c911c29a20911d370ec227405671218c2a4fee51b05ab5cc963002b719c2380c621fa603cd9082500eed91ace57fea6294e16a026e70193b
7
- data.tar.gz: 78b9d45a11f131d20790a84d40c4547582d043fc779b77d398660ca35cc0eb415c4b55d8aba3e8b1d949cc864e7c71fe7ad5565af7e47ec4e5a5079b5cd095fc
6
+ metadata.gz: ee568051d2872db9f81c7d9a3609379eba74db82862ad55976b962e0c4b835dca9f7af74c67014554f6ee919edde2dab050a77fc248bc71ed2c4969009cede1d
7
+ data.tar.gz: 80dd4085d700581a02dd9507e88e0cbf28e978cbbd61d0e0906c73d2f713abbdd9393caec13d6854b3727d1b1fdd87a673d67323b4b315990a00f06fa23a1f44
data/CHANGELOG.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
- ## 0.51.1 (2021-08-19)
3
+ ## 0.52.0 (2021-08-21)
4
4
 
5
+ * ``Node#child_node_range`` supports nested child
5
6
  * Require `fileutils`
7
+ * Rename `Node#indent` to `Node#column`
6
8
 
7
9
  ## 0.51.0 (2021-08-12)
8
10
 
@@ -322,10 +322,10 @@ module Parser::AST
322
322
  loc.expression&.source
323
323
  end
324
324
 
325
- # Get the indent of current node.
325
+ # Get the column of current node.
326
326
  #
327
- # @return [Integer] indent.
328
- def indent
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
- 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
- )
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
- # arguments
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.first.loc.expression.begin_pos,
393
- child_node.last.loc.expression.end_pos
387
+ child_node.loc.expression.begin_pos,
388
+ child_node.loc.expression.end_pos
394
389
  )
395
390
  )
396
391
  end
397
392
 
398
- raise Synvert::Core::MethodNotSupported,
399
- "child_node_range is not handled for #{debug_info}, child_name: #{child_name}"
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.indent - END_LENGTH
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.indent + DEFAULT_INDENT)
34
+ ' ' * (node.column + DEFAULT_INDENT)
35
35
  else
36
- ' ' * node.indent
36
+ ' ' * node.column
37
37
  end
38
38
  end
39
39
  end
@@ -24,7 +24,7 @@ module Synvert::Core
24
24
  # @param node [Parser::AST::Node]
25
25
  # @return [String] n times whitesphace
26
26
  def indent(node)
27
- ' ' * node.indent
27
+ ' ' * node.column
28
28
  end
29
29
  end
30
30
  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.indent + DEFAULT_INDENT)
41
+ ' ' * (node.column + DEFAULT_INDENT)
42
42
  else
43
- ' ' * node.indent
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(@node) + line)
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(node)
42
- ' ' * node.indent
40
+ def indent
41
+ ' ' * @node.column
43
42
  end
44
43
  end
45
44
  end
@@ -8,7 +8,7 @@ module Synvert::Core
8
8
  class Rewriter::WrapAction < Rewriter::Action
9
9
  def initialize(instance, with:, indent: nil)
10
10
  super(instance, with)
11
- @indent = indent || @node.indent
11
+ @indent = indent || @node.column
12
12
  end
13
13
 
14
14
  # Begin position of code to wrap.
@@ -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 change its scope to matching node.
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. It checks the current node and iterates all child nodes,
20
- # then run the block code with each matching node.
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '0.51.1'
5
+ VERSION = '0.52.0'
6
6
  end
7
7
  end
@@ -359,10 +359,10 @@ describe Parser::AST::Node do
359
359
  end
360
360
  end
361
361
 
362
- describe '#indent' do
362
+ describe '#column' do
363
363
  it 'gets column number' do
364
364
  node = parse(' FactoryGirl.create :post')
365
- expect(node.indent).to eq 2
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.51.1
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-19 00:00:00.000000000 Z
11
+ date: 2021-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport