synvert-core 0.13.1 → 0.15.2

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
- SHA1:
3
- metadata.gz: 4bbd5d82142a4b75f2501352a487e4e2281f7a90
4
- data.tar.gz: 550a03fbce2e5b7a82187dfe9aab6d5f9cb4f282
2
+ SHA256:
3
+ metadata.gz: d2aaa8ceb8c8b0961d58714137b5022acbd369cc610e7a38b6da928cbb7ba86c
4
+ data.tar.gz: b7fe630b61237f937e4f0b81382a2b2794facf68c93f0c0f98ce58d96b251874
5
5
  SHA512:
6
- metadata.gz: 518fc4359e14858de47c4db1da8f8848d837c1f6fda780e7060ad7ce92b111ba4c1ae0d22a2c856280f1c8095bac7c4c3e26961a427d4c9ac1878d2bc77907d1
7
- data.tar.gz: 6487d878996bdeef285995c68390164fe488d39440b26e0f846b6df256ad6b841862e189f43b1e4d5fb610142fdce0645550584d9049a49c20b4ec8a2b392bd6
6
+ metadata.gz: 7ec722e6324794f00fe7152aadb17e02532b654f6a00a15f08c0fd4b0569fd722cea3a9328e5ed2fa2d8c07fc7c2ad263dd44f78970e9eac7e5db8aac9e1dfac
7
+ data.tar.gz: 0b0ef0c5ec24954255ee2d1e5e1c6537571d51fbfeedd0999b3d2ee00d70cdc2b231d96626077793ab0614c78896c494d3e177541e28d3c387bbc524336294c1
@@ -1,7 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
- ## 0.13.1
3
+ ## 0.15.1 (2019-10-11)
4
4
 
5
+ * Use parser 2.6.5.0
6
+
7
+ ## 0.15.0 (2018-05-23)
8
+
9
+ * Use parser 2.5.1.1
10
+
11
+ ## 0.14.0 (2017-05-10)
12
+
13
+ * Add helper add_curly_brackets_if_necessary
14
+ * Add name for restarg node
5
15
  * Add message for zsuper node
6
16
 
7
17
  ## 0.13.0 (2017-04-15)
@@ -30,7 +30,7 @@ module Parser::AST
30
30
  # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
31
31
  def name
32
32
  case self.type
33
- when :class, :module, :def, :arg, :blockarg
33
+ when :class, :module, :def, :arg, :blockarg, :restarg
34
34
  self.children[0]
35
35
  when :defs, :const
36
36
  self.children[1]
@@ -4,6 +4,7 @@ module Synvert::Core
4
4
  # Action defines rewriter action, add, replace or remove code.
5
5
  class Rewriter::Action
6
6
  DEFAULT_OPTIONS = { autoindent: true }
7
+ DEFAULT_INDENT = 2
7
8
 
8
9
  # Initialize an action.
9
10
  #
@@ -45,4 +46,3 @@ module Synvert::Core
45
46
  end
46
47
  end
47
48
  end
48
-
@@ -1,8 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Synvert::Core
4
- # AppendWithAction to append code to the bottom of node body.
4
+ # AppendAction to append code to the bottom of node body.
5
5
  class Rewriter::AppendAction < Rewriter::Action
6
+ END_LENGTH = "\nend".length
7
+
6
8
  # Begin position to append code.
7
9
  #
8
10
  # @return [Integer] begin position.
@@ -10,7 +12,7 @@ module Synvert::Core
10
12
  if :begin == @node.type
11
13
  @node.loc.expression.end_pos
12
14
  else
13
- @node.loc.expression.end_pos - @node.indent - 4
15
+ @node.loc.expression.end_pos - @node.indent - END_LENGTH
14
16
  end
15
17
  end
16
18
 
@@ -29,7 +31,7 @@ module Synvert::Core
29
31
  # @return [String] n times whitesphace
30
32
  def indent(node)
31
33
  if [:block, :class].include? node.type
32
- ' ' * (node.indent + 2)
34
+ ' ' * (node.indent + DEFAULT_INDENT)
33
35
  else
34
36
  ' ' * node.indent
35
37
  end
@@ -3,11 +3,20 @@
3
3
  module Synvert::Core
4
4
  # InsertAction to insert code to the top of node body.
5
5
  class Rewriter::InsertAction < Rewriter::Action
6
+ DO_LENGTH = " do".length
7
+
6
8
  # Begin position to insert code.
7
9
  #
8
10
  # @return [Integer] begin position.
9
11
  def begin_pos
10
- insert_position(@node)
12
+ case @node.type
13
+ when :block
14
+ @node.children[1].children.empty? ? @node.children[0].loc.expression.end_pos + DO_LENGTH : @node.children[1].loc.expression.end_pos
15
+ when :class
16
+ @node.children[1] ? @node.children[1].loc.expression.end_pos : @node.children[0].loc.expression.end_pos
17
+ else
18
+ @node.children.last.loc.expression.end_pos
19
+ end
11
20
  end
12
21
 
13
22
  # End position, always same to begin position.
@@ -19,27 +28,13 @@ module Synvert::Core
19
28
 
20
29
  private
21
30
 
22
- # Insert position.
23
- #
24
- # @return [Integer] insert position.
25
- def insert_position(node)
26
- case node.type
27
- when :block
28
- node.children[1].children.empty? ? node.children[0].loc.expression.end_pos + 3 : node.children[1].loc.expression.end_pos
29
- when :class
30
- node.children[1] ? node.children[1].loc.expression.end_pos : node.children[0].loc.expression.end_pos
31
- else
32
- node.children.last.loc.expression.end_pos
33
- end
34
- end
35
-
36
31
  # Indent of the node.
37
32
  #
38
33
  # @param node [Parser::AST::Node]
39
34
  # @return [String] n times whitesphace
40
35
  def indent(node)
41
36
  if [:block, :class].include? node.type
42
- ' ' * (node.indent + 2)
37
+ ' ' * (node.indent + DEFAULT_INDENT)
43
38
  else
44
39
  ' ' * node.indent
45
40
  end
@@ -40,6 +40,22 @@ module Synvert::Core
40
40
  end
41
41
  end
42
42
 
43
+ # Add curly brackets to code if necessary.
44
+ #
45
+ # @param code [String] old code
46
+ # @return [String] new code
47
+ #
48
+ # @example
49
+ #
50
+ # add_curly_brackets_if_necessary("{{arguments}}")
51
+ def add_curly_brackets_if_necessary(code)
52
+ if code.start_with?('{') && code.end_with?('}')
53
+ code
54
+ else
55
+ "{ #{code} }"
56
+ end
57
+ end
58
+
43
59
  # Remove leading and trailing brackets.
44
60
  #
45
61
  # @param code [String] old code
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = "0.13.1"
5
+ VERSION = "0.15.2"
6
6
  end
7
7
  end
@@ -44,6 +44,11 @@ describe Parser::AST::Node do
44
44
  node = parse('var.each { |(param1, param2)| }')
45
45
  expect(node.arguments.first.name).to eq node.arguments.first
46
46
  end
47
+
48
+ it 'gets for restarg node' do
49
+ node = parse('object.each { |*entry| }')
50
+ expect(node.arguments.first.name).to eq :entry
51
+ end
47
52
  end
48
53
 
49
54
  describe '#parent_class' do
@@ -48,6 +48,16 @@ module Synvert::Core
48
48
  end
49
49
  end
50
50
 
51
+ describe "add_curly_brackets_if_necessary" do
52
+ it "add {} if code does not have" do
53
+ expect(dummy_instance.add_curly_brackets_if_necessary("foo: bar")).to eq "{ foo: bar }"
54
+ end
55
+
56
+ it "doesn't add {} if code already has" do
57
+ expect(dummy_instance.add_curly_brackets_if_necessary("{foo: bar}")).to eq "{foo: bar}"
58
+ end
59
+ end
60
+
51
61
  describe "strip_brackets" do
52
62
  it "strip ()" do
53
63
  expect(dummy_instance.strip_brackets("(123)")).to eq "123"
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency "parser", "~> 2.4.0"
21
+ spec.add_runtime_dependency "parser", "~> 3.0.0"
22
22
  spec.add_runtime_dependency "activesupport"
23
23
  spec.add_runtime_dependency "erubis"
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "bundler"
26
26
  spec.add_development_dependency "rake"
27
27
  spec.add_development_dependency "rspec"
28
28
  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.13.1
4
+ version: 0.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-17 00:00:00.000000000 Z
11
+ date: 2021-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.0
19
+ version: 3.0.0
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.0
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.6'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.6'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ homepage: https://github.com/xinminlabs/synvert-core
194
194
  licenses:
195
195
  - MIT
196
196
  metadata: {}
197
- post_install_message:
197
+ post_install_message:
198
198
  rdoc_options: []
199
199
  require_paths:
200
200
  - lib
@@ -209,9 +209,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  - !ruby/object:Gem::Version
210
210
  version: '0'
211
211
  requirements: []
212
- rubyforge_project:
213
- rubygems_version: 2.6.10
214
- signing_key:
212
+ rubygems_version: 3.1.4
213
+ signing_key:
215
214
  specification_version: 4
216
215
  summary: convert ruby code to better syntax.
217
216
  test_files: