synvert-core 0.13.1 → 0.15.2

Sign up to get free protection for your applications and to get access to all the features.
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: