parser_node_ext 1.3.0 → 1.3.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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/lib/parser_node_ext/version.rb +1 -1
- data/lib/parser_node_ext.rb +6 -61
- metadata +2 -2
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,52 +319,6 @@ module ParserNodeExt
|
|
319
319
|
end
|
320
320
|
end
|
321
321
|
|
322
|
-
# Check if :hash node contains specified key.
|
323
|
-
# @example
|
324
|
-
# node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)))
|
325
|
-
# node.key?(:foo) # true
|
326
|
-
# @param [Symbol, String] key value.
|
327
|
-
# @return [Boolean] true if specified key exists.
|
328
|
-
# @raise [MethodNotSupported] if calls on other node.
|
329
|
-
def key?(key)
|
330
|
-
if %i[hash hash_pattern].include?(type)
|
331
|
-
pairs.any? { |pair_node| pair_node.key.to_value == key }
|
332
|
-
else
|
333
|
-
raise MethodNotSupported, "key? is not supported for #{self}"
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
# Get :hash pair node according to specified key.
|
338
|
-
# @example
|
339
|
-
# node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)))
|
340
|
-
# node.hash_pair(:foo) # s(:pair, s(:sym, :foo), s(:sym, :bar))
|
341
|
-
# @param [Symbol, String] key value.
|
342
|
-
# @return [Parser::AST::Node] hash pair node.
|
343
|
-
# @raise [MethodNotSupported] if calls on other node.
|
344
|
-
def hash_pair(key)
|
345
|
-
if %i[hash hash_pattern].include?(type)
|
346
|
-
pairs.find { |pair_node| pair_node.key.to_value == key }
|
347
|
-
else
|
348
|
-
raise MethodNotSupported, "hash_pair is not supported for #{self}"
|
349
|
-
end
|
350
|
-
end
|
351
|
-
|
352
|
-
# Get :hash value node according to specified key.
|
353
|
-
# @example
|
354
|
-
# node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)))
|
355
|
-
# node.hash_value(:foo) # s(:sym, :bar)
|
356
|
-
# @param [Symbol, String] key value.
|
357
|
-
# @return [Parser::AST::Node] hash value node.
|
358
|
-
# @raise [MethodNotSupported] if calls on other node.
|
359
|
-
def hash_value(key)
|
360
|
-
if %i[hash hash_pattern].include?(type)
|
361
|
-
value_node = pairs.find { |pair_node| pair_node.key.to_value == key }
|
362
|
-
value_node&.value
|
363
|
-
else
|
364
|
-
raise MethodNotSupported, "hash_value is not supported for #{self}"
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
322
|
# Get kwsplats of :hash and :hash_pattern node.
|
369
323
|
# @example
|
370
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)))
|
@@ -422,22 +376,13 @@ module ParserNodeExt
|
|
422
376
|
return children.send(method_name, *args, &block)
|
423
377
|
elsif :hash == type && method_name.to_s.end_with?('_pair')
|
424
378
|
key = method_name.to_s[0..-6]
|
425
|
-
return
|
426
|
-
return hash_pair(key.to_s) if key?(key.to_s)
|
427
|
-
|
428
|
-
return nil
|
379
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }
|
429
380
|
elsif :hash == type && method_name.to_s.end_with?('_value')
|
430
381
|
key = method_name.to_s[0..-7]
|
431
|
-
return
|
432
|
-
return hash_value(key.to_s) if key?(key.to_s)
|
433
|
-
|
434
|
-
return nil
|
382
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }&.value
|
435
383
|
elsif :hash == type && method_name.to_s.end_with?('_source')
|
436
384
|
key = method_name.to_s[0..-8]
|
437
|
-
return
|
438
|
-
return hash_value(key.to_s)&.to_source if key?(key.to_s)
|
439
|
-
|
440
|
-
return ''
|
385
|
+
return pairs.find { |pair| pair.key.to_value.to_s == key }&.value&.to_source || ''
|
441
386
|
end
|
442
387
|
|
443
388
|
super
|
@@ -448,13 +393,13 @@ module ParserNodeExt
|
|
448
393
|
return true
|
449
394
|
elsif :hash == type && method_name.to_s.end_with?('_pair')
|
450
395
|
key = method_name.to_s[0..-6]
|
451
|
-
return
|
396
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
452
397
|
elsif :hash == type && method_name.to_s.end_with?('_value')
|
453
398
|
key = method_name.to_s[0..-7]
|
454
|
-
return
|
399
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
455
400
|
elsif :hash == type && method_name.to_s.end_with?('_source')
|
456
401
|
key = method_name.to_s[0..-8]
|
457
|
-
return
|
402
|
+
return !!pairs.find { |pair| pair.key.to_value.to_s == key }
|
458
403
|
end
|
459
404
|
|
460
405
|
super
|
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: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|