parser_node_ext 0.3.0 → 0.4.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: 0b8a89fd698e65560bb6ec6288cc2739b8073440b2763c6f37d8f2a662e7d629
4
- data.tar.gz: 36be4ab919e445d38e506f6b91cdbeac541568d328459eb6b4756d21fb1edfc5
3
+ metadata.gz: 54f47aa3cbd58cec27d151340e935bf687be7c9cb63c523cdd8174869aebaf7e
4
+ data.tar.gz: e3e940453872b9bd0abd24a2b11b8d07c59e35613717b365b9810b0461cd1f28
5
5
  SHA512:
6
- metadata.gz: c0e1ac0d615a85c08ac82a793ac3f4c205e44f14360593836ea37dc791c237b7d72691ba35525d60a2dd9e3a2dbc270fddfc036514d2cfa9680755c0850262de
7
- data.tar.gz: f45b6a7df41303d14829b7416e761ce0b5737a9030b986522c1dd3704ea6b528390ec7137991c7916fa25c3034028e1a60298ff5fd7803e6555bc3e0ab867087
6
+ metadata.gz: 573b0ae05b18d25c04bc1efeac3f763c3872eee302d1b23fa11c054d32a1ea84afc86e7984e3ae6892f55bc39c4b0c8faadf133da1d53af6b387b8a57f55f685
7
+ data.tar.gz: b8b718a0dec190ce6b563fa9edd842d38869a58f7bc43799297e6ed88268f2fd5427315791c5b4cec62046d510056165b60683d36709d86790675eb19b14b655
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.4.0 (2022-07-07)
4
+
5
+ * raise `MethodNotSupported` error
6
+
3
7
  ## 0.3.0 (2022-07-04)
4
8
 
5
9
  * Add `Node#to_hash`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parser_node_ext (0.3.0)
4
+ parser_node_ext (0.4.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.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -93,7 +93,7 @@ module ParserNodeExt
93
93
  index = TYPE_CHILDREN[type]&.index(method_name)
94
94
  return children[index] if index
95
95
 
96
- raise Synvert::Core::MethodNotSupported, "#{method_name} is not handled for #{debug_info}"
96
+ raise MethodNotSupported, "#{method_name} is not handled for #{debug_info}"
97
97
  end
98
98
  end
99
99
 
@@ -103,14 +103,14 @@ module ParserNodeExt
103
103
  # node # s(:or_asgn, s(:lvasgn, :a), s(:int, 1))
104
104
  # node.left_value # :a
105
105
  # @return [Parser::AST::Node] left value of node.
106
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
106
+ # @raise [MethodNotSupported] if calls on other node.
107
107
  def left_value
108
108
  return children[0].children[0] if type == :or_asgn
109
109
 
110
110
  index = TYPE_CHILDREN[type]&.index(:left_value)
111
111
  return children[index] if index
112
112
 
113
- raise Synvert::Core::MethodNotSupported, "#{left_value} is not handled for #{debug_info}"
113
+ raise MethodNotSupported, "#{left_value} is not handled for #{debug_info}"
114
114
  end
115
115
 
116
116
  # Get arguments of node.
@@ -119,7 +119,7 @@ module ParserNodeExt
119
119
  # node # s(:send, s(:const, nil, :FactoryGirl), :create, s(:sym, :post), s(:hash, s(:pair, s(:sym, :title), s(:str, "post"))))
120
120
  # node.arguments # [s(:sym, :post), s(:hash, s(:pair, s(:sym, :title), s(:str, "post")))]
121
121
  # @return [Array<Parser::AST::Node>] arguments of node.
122
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
122
+ # @raise [MethodNotSupported] if calls on other node.
123
123
  def arguments
124
124
  case type
125
125
  when :def, :block
@@ -131,7 +131,7 @@ module ParserNodeExt
131
131
  when :defined?
132
132
  children
133
133
  else
134
- raise Synvert::Core::MethodNotSupported, "arguments is not handled for #{debug_info}"
134
+ raise MethodNotSupported, "arguments is not handled for #{debug_info}"
135
135
  end
136
136
  end
137
137
 
@@ -141,7 +141,7 @@ module ParserNodeExt
141
141
  # 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)))
142
142
  # node.body # [s(:send, nil, :include, s(:const, s(:const, nil, :EmailSpec), :Helpers))]
143
143
  # @return [Array<Parser::AST::Node>] body of node.
144
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
144
+ # @raise [MethodNotSupported] if calls on other node.
145
145
  def body
146
146
  case type
147
147
  when :begin
@@ -155,7 +155,7 @@ module ParserNodeExt
155
155
 
156
156
  :begin == children[3].type ? children[3].body : children[3..-1]
157
157
  else
158
- raise Synvert::Core::MethodNotSupported, "body is not handled for #{debug_info}"
158
+ raise MethodNotSupported, "body is not handled for #{debug_info}"
159
159
  end
160
160
  end
161
161
 
@@ -165,12 +165,12 @@ module ParserNodeExt
165
165
  # node # s(:if, s(:defined?, s(:const, nil, :Bundler)), nil, nil)
166
166
  # node.condition # s(:defined?, s(:const, nil, :Bundler))
167
167
  # @return [Parser::AST::Node] condition of node.
168
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
168
+ # @raise [MethodNotSupported] if calls on other node.
169
169
  def condition
170
170
  if :if == type
171
171
  children[0]
172
172
  else
173
- raise Synvert::Core::MethodNotSupported, "condition is not handled for #{debug_info}"
173
+ raise MethodNotSupported, "condition is not handled for #{debug_info}"
174
174
  end
175
175
  end
176
176
 
@@ -179,12 +179,12 @@ module ParserNodeExt
179
179
  # node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)), s(:pair, s(:str, "foo"), s(:str, "bar")))
180
180
  # node.keys # [s(:sym, :foo), s(:str, "foo")]
181
181
  # @return [Array<Parser::AST::Node>] keys of node.
182
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
182
+ # @raise [MethodNotSupported] if calls on other node.
183
183
  def keys
184
184
  if :hash == type
185
185
  children.map { |child| child.children[0] }
186
186
  else
187
- raise Synvert::Core::MethodNotSupported, "keys is not handled for #{debug_info}"
187
+ raise MethodNotSupported, "keys is not handled for #{debug_info}"
188
188
  end
189
189
  end
190
190
 
@@ -193,12 +193,12 @@ module ParserNodeExt
193
193
  # node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)), s(:pair, s(:str, "foo"), s(:str, "bar")))
194
194
  # node.values # [s(:sym, :bar), s(:str, "bar")]
195
195
  # @return [Array<Parser::AST::Node>] values of node.
196
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
196
+ # @raise [MethodNotSupported] if calls on other node.
197
197
  def values
198
198
  if :hash == type
199
199
  children.map { |child| child.children[1] }
200
200
  else
201
- raise Synvert::Core::MethodNotSupported, "keys is not handled for #{debug_info}"
201
+ raise MethodNotSupported, "keys is not handled for #{debug_info}"
202
202
  end
203
203
  end
204
204
 
@@ -208,12 +208,12 @@ module ParserNodeExt
208
208
  # node.key?(:foo) # true
209
209
  # @param [Symbol, String] key value.
210
210
  # @return [Boolean] true if specified key exists.
211
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
211
+ # @raise [MethodNotSupported] if calls on other node.
212
212
  def key?(key)
213
213
  if :hash == type
214
214
  children.any? { |pair_node| pair_node.key.to_value == key }
215
215
  else
216
- raise Synvert::Core::MethodNotSupported, "key? is not handled for #{debug_info}"
216
+ raise MethodNotSupported, "key? is not handled for #{debug_info}"
217
217
  end
218
218
  end
219
219
 
@@ -223,13 +223,13 @@ module ParserNodeExt
223
223
  # node.hash_value(:foo) # s(:sym, :bar)
224
224
  # @param [Symbol, String] key value.
225
225
  # @return [Parser::AST::Node] hash value of node.
226
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
226
+ # @raise [MethodNotSupported] if calls on other node.
227
227
  def hash_value(key)
228
228
  if :hash == type
229
229
  value_node = children.find { |pair_node| pair_node.key.to_value == key }
230
230
  value_node&.value
231
231
  else
232
- raise Synvert::Core::MethodNotSupported, "hash_value is not handled for #{debug_info}"
232
+ raise MethodNotSupported, "hash_value is not handled for #{debug_info}"
233
233
  end
234
234
  end
235
235
 
@@ -239,7 +239,7 @@ module ParserNodeExt
239
239
  # node # s(:array, s(:str, "str"), s(:sym, :str))
240
240
  # node.to_value # ['str', :str]
241
241
  # @return [Object] exact value.
242
- # @raise [Synvert::Core::MethodNotSupported] if calls on other node.
242
+ # @raise [MethodNotSupported] if calls on other node.
243
243
  def to_value
244
244
  case type
245
245
  when :int, :float, :str, :sym
@@ -330,6 +330,19 @@ module ParserNodeExt
330
330
 
331
331
  super
332
332
  end
333
+
334
+ # Return the debug info.
335
+ #
336
+ # @return [String] file, line, source and node.
337
+ def debug_info
338
+ "\n" +
339
+ [
340
+ "file: #{loc.expression.source_buffer.name}",
341
+ "line: #{loc.expression.line}",
342
+ "source: #{to_source}",
343
+ "node: #{inspect}"
344
+ ].join("\n")
345
+ end
333
346
  end
334
347
  end
335
348
  end
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.3.0
4
+ version: 0.4.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: 2022-07-04 00:00:00.000000000 Z
11
+ date: 2022-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser