parser_node_ext 0.6.1 → 0.8.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: 0c010eedee012b007e7dd9d4ad497a418baff0fd7ff6cbd90e28900f2910ab61
4
- data.tar.gz: 69a8789262a112d6761a47230cfa7dabac548e7250dbcbc71eecd9aa11faf3d3
3
+ metadata.gz: 3e35bf56931447c5e56c2c88c387607230701259e1c8cbc56a347901bc7019e3
4
+ data.tar.gz: 3c0dd82b73f35f2f4b61ca4d0795293102fe9f18c325f305b21b344d68367a00
5
5
  SHA512:
6
- metadata.gz: 4aaab8fec5b8b0c4ac5df1cd4a56acb4e0331bd13988cab00e52bd9e0c08e103a4bfa9a976bff84699dec1310f9a01f891a4222b750d1836c26171ccc5913a0d
7
- data.tar.gz: 86bd7ed9bd852983e2ec19d3c795edae960f20670c325557549e2abe69e0086f05c6510a33d550e8f480d87ae64d652cc88bcd5debddcfb221f0a7b79cbaa254
6
+ metadata.gz: 218616f2d89d224c5cf4f930581f5a3389e076e6cab3674c2551bd432d6928d08cfc429d3cb6ccf62b2f3d51d45927d173403311c8e20cab594f5a5230797fbe
7
+ data.tar.gz: ab05bcb20c20dcc05ee88333678bf0b9df529953f80bb6bda4717b70be6c238842909bc52d465f7041df00ab6221276a776e57e5a405851a60dcc4c9914807a8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.8.0 (2023-01-30)
4
+
5
+ * Support `numblock` node
6
+
7
+ ## 0.7.0 (2023-01-28)
8
+
9
+ * Support `elements` for `array` node
10
+ * Support `forward_args`
11
+
3
12
  ## 0.6.1 (2023-01-21)
4
13
 
5
14
  * Fix typo
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parser_node_ext (0.6.1)
4
+ parser_node_ext (0.8.0)
5
5
  parser
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ParserNodeExt
4
- VERSION = "0.6.1"
4
+ VERSION = "0.8.0"
5
5
  end
@@ -35,6 +35,7 @@ module ParserNodeExt
35
35
  masgn: %i[left_value right_value],
36
36
  module: %i[name body],
37
37
  nil: [],
38
+ numblock: %i[caller arguments_count body],
38
39
  or: %i[left_value right_value],
39
40
  or_asgn: %i[left_value right_value],
40
41
  pair: %i[key value],
@@ -119,9 +120,11 @@ module ParserNodeExt
119
120
  def arguments
120
121
  case type
121
122
  when :def, :block
122
- children[1].children
123
+ children[1].type == :args ? children[1].children : [children[1]]
123
124
  when :defs
124
- children[2].children
125
+ children[2].type == :args ? children[2].children : [children[2]]
126
+ when :block
127
+ children[1].children
125
128
  when :send, :csend
126
129
  children[2..-1]
127
130
  when :defined?
@@ -132,7 +135,7 @@ module ParserNodeExt
132
135
  end
133
136
 
134
137
  # Get body of node.
135
- # It supports :begin, :block, :class, :def, :defs and :module node.
138
+ # It supports :begin, :block, :class, :def, :defs, :module, :numblock node.
136
139
  # @example
137
140
  # node # s(:block, s(:send, s(:const, nil, :RSpec), :configure), s(:args, s(:arg, :config)), s(:send, nil, :include, s(:const, s(:const, nil, :EmailSpec), :Helpers)))
138
141
  # node.body # [s(:send, nil, :include, s(:const, s(:const, nil, :EmailSpec), :Helpers))]
@@ -146,7 +149,7 @@ module ParserNodeExt
146
149
  return [] if children[1].nil?
147
150
 
148
151
  :begin == children[1].type ? children[1].body : children[1..-1]
149
- when :def, :block, :class, :module
152
+ when :def, :block, :class, :module, :numblock
150
153
  return [] if children[2].nil?
151
154
 
152
155
  :begin == children[2].type ? children[2].body : children[2..-1]
@@ -159,6 +162,9 @@ module ParserNodeExt
159
162
  end
160
163
  end
161
164
 
165
+ # Get when statements of case node.
166
+ # @return [Array<Parser::AST::Node>] when statements of case node.
167
+ # @raise [MethodNotSupported] if calls on other node.
162
168
  def when_statements
163
169
  if :case == type
164
170
  children[1...-1]
@@ -167,10 +173,24 @@ module ParserNodeExt
167
173
  end
168
174
  end
169
175
 
176
+ # Get else statement of case node.
177
+ # @return [Parser::AST::Node] else statement of case node.
178
+ # @raise [MethodNotSupported] if calls on other node.
170
179
  def else_statement
171
180
  children[-1]
172
181
  end
173
182
 
183
+ # Get elements of array node.
184
+ # @return [Array<Parser::AST::Node>] elements of array node.
185
+ # @raise [MethodNotSupported] if calls on other node.
186
+ def elements
187
+ if :array == type
188
+ children
189
+ else
190
+ raise MethodNotSupported, "elements is not supported for #{self}"
191
+ end
192
+ end
193
+
174
194
  # Get pairs of :hash node.
175
195
  # @example
176
196
  # node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)), s(:pair, s(:str, "foo"), s(:str, "bar")))
@@ -3,8 +3,10 @@ module ParserNodeExt
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
4
 
5
5
  def arguments: () -> Array[Parser::AST::Node]
6
+ def arguments_count: () -> Integer
6
7
  def body: () -> Array[Parser::AST::Node]
7
8
  def caller: () -> Parser::AST::Node
9
+ def elements: () -> Array[Parser::AST::Node]
8
10
  def else_statement: () -> Parser::AST::Node
9
11
  def expression: () -> Parser::AST::Node
10
12
  def if_statement: () -> Parser::AST::Node
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parser_node_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-21 00:00:00.000000000 Z
11
+ date: 2023-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser