parser_node_ext 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/parser_node_ext/version.rb +1 -1
- data/lib/parser_node_ext.rb +6 -46
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaf18e510d010abe73429864f55581cdc6ee4f1dfea42ae2c7e7aebd304f0251
|
4
|
+
data.tar.gz: dd1e60ba561f999d822b8c35ac4bb657680fd33c23e606b85f26e859f121b7f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4ced2a132a1870df30aaeb0536291a4c239a93bfa7dfc2a8e609f845031b7907358c9158c515b6a27031bfc3c5cb75e657b60662c6f3d09ae432dcd2874c2fb
|
7
|
+
data.tar.gz: f38f42bf0d8a7a2b86f435efa04fc9192c36c0a2a1d1ee253a35207fd55ac88aba9388021979b24ac0b9c31111ddc3426a1dec97a69ea81c514254852639fc79
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/lib/parser_node_ext.rb
CHANGED
@@ -319,37 +319,6 @@ module ParserNodeExt
|
|
319
319
|
end
|
320
320
|
end
|
321
321
|
|
322
|
-
# Get :hash pair node according to specified key.
|
323
|
-
# @example
|
324
|
-
# node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)))
|
325
|
-
# node.hash_pair(:foo) # s(:pair, s(:sym, :foo), s(:sym, :bar))
|
326
|
-
# @param [Symbol, String] key value.
|
327
|
-
# @return [Parser::AST::Node] hash pair node.
|
328
|
-
# @raise [MethodNotSupported] if calls on other node.
|
329
|
-
def hash_pair(key)
|
330
|
-
if %i[hash hash_pattern].include?(type)
|
331
|
-
pairs.find { |pair_node| pair_node.key.to_value == key }
|
332
|
-
else
|
333
|
-
raise MethodNotSupported, "hash_pair is not supported for #{self}"
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
# Get :hash value node according to specified key.
|
338
|
-
# @example
|
339
|
-
# node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)))
|
340
|
-
# node.hash_value(:foo) # s(:sym, :bar)
|
341
|
-
# @param [Symbol, String] key value.
|
342
|
-
# @return [Parser::AST::Node] hash value node.
|
343
|
-
# @raise [MethodNotSupported] if calls on other node.
|
344
|
-
def hash_value(key)
|
345
|
-
if %i[hash hash_pattern].include?(type)
|
346
|
-
value_node = pairs.find { |pair_node| pair_node.key.to_value == key }
|
347
|
-
value_node&.value
|
348
|
-
else
|
349
|
-
raise MethodNotSupported, "hash_value is not supported for #{self}"
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
322
|
# Get kwsplats of :hash and :hash_pattern node.
|
354
323
|
# @example
|
355
324
|
# node s(:hash, s(:pair, s(:int, 1), s(:int, 2)), s(:kwsplat, s(:send, nil, :bar)), s(:pair, s(:sym, :baz), s(:int, 3)))
|
@@ -407,22 +376,13 @@ module ParserNodeExt
|
|
407
376
|
return children.send(method_name, *args, &block)
|
408
377
|
elsif :hash == type && method_name.to_s.end_with?('_pair')
|
409
378
|
key = method_name.to_s[0..-6]
|
410
|
-
return
|
411
|
-
return hash_pair(key.to_s) if keys.map(&:to_value).include?(key.to_s)
|
412
|
-
|
413
|
-
return nil
|
379
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }
|
414
380
|
elsif :hash == type && method_name.to_s.end_with?('_value')
|
415
381
|
key = method_name.to_s[0..-7]
|
416
|
-
return
|
417
|
-
return hash_value(key.to_s) if keys.map(&:to_value).include?(key.to_s)
|
418
|
-
|
419
|
-
return nil
|
382
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }&.value
|
420
383
|
elsif :hash == type && method_name.to_s.end_with?('_source')
|
421
384
|
key = method_name.to_s[0..-8]
|
422
|
-
return
|
423
|
-
return hash_value(key.to_s)&.to_source if keys.map(&:to_value).include?(key.to_s)
|
424
|
-
|
425
|
-
return ''
|
385
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }&.value&.to_source || ''
|
426
386
|
end
|
427
387
|
|
428
388
|
super
|
@@ -433,13 +393,13 @@ module ParserNodeExt
|
|
433
393
|
return true
|
434
394
|
elsif :hash == type && method_name.to_s.end_with?('_pair')
|
435
395
|
key = method_name.to_s[0..-6]
|
436
|
-
return
|
396
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
437
397
|
elsif :hash == type && method_name.to_s.end_with?('_value')
|
438
398
|
key = method_name.to_s[0..-7]
|
439
|
-
return
|
399
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
440
400
|
elsif :hash == type && method_name.to_s.end_with?('_source')
|
441
401
|
key = method_name.to_s[0..-8]
|
442
|
-
return
|
402
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
443
403
|
end
|
444
404
|
|
445
405
|
super
|