prism_ext 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 695e9d8152060370e01e3f95624c4008015551a06ccd12c283e85e7a1bb59f11
4
- data.tar.gz: a94e3ff7e5e9befb6500f44dc6b25b9c360e28f1356b6e17532842ffa58a7cae
3
+ metadata.gz: c5fbb378a9c09790397fcdda6460841dda3ee4a743f3fae4d19e6309b2239539
4
+ data.tar.gz: d52081d91e7b7f133f3fd5241e14168765d0fbbe8cfeafb686dc79adbc285a4a
5
5
  SHA512:
6
- metadata.gz: 04ec3cb586628e36ab5ec8ff22e9d8f20e5e9d17b2fae2291bb921fb81e679fa7ba28b3984d4a7064c22025d9bc93bf3665f0d248fb57cb15cbe60894e5b817a
7
- data.tar.gz: c5a4534721f7a4d36737f77dcf901c0db0d90506bb94ee30dae9b247b89ce1a73303baa69428bc1a14ef15e10e2e88a0a8d3335adfa404bac4ca9784dd08b676
6
+ metadata.gz: 6c9d6e3142e5ffbabe9c6ef8432e1ce58d1ae779ff8af732ed734cbd46e367b4816e7c5f816dc03cbc504e41b3299d9bad977f8a1127728bc7b34086cc4bcb21
7
+ data.tar.gz: cc2f194f4e933b1110ddd6f6795c02cb5b50515ec106cc61b77d0051afa077f6a49f7794c3d827a9078e2af50892742a701a9910313ade8ae20a0701cd29df7e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.2.2 (2024-02-11)
4
+
5
+ * Reuse `respond_to_elements?`
6
+
7
+ ## 0.2.1 (2024-02-11)
8
+
9
+ * Check both `HashNode` and `KeywordHashNode`.
10
+
3
11
  ## 0.2.0 (2024-02-10)
4
12
 
5
13
  * Set `parent_node` to `Prism::Node`.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prism_ext (0.2.0)
4
+ prism_ext (0.2.2)
5
5
  prism
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PrismExt
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
data/lib/prism_ext.rb CHANGED
@@ -46,7 +46,7 @@ module Prism
46
46
  end
47
47
 
48
48
  def keys
49
- if is_a?(HashNode)
49
+ if respond_to_elements?
50
50
  elements.map(&:key)
51
51
  else
52
52
  raise MethodNotSupported, "keys is not supported for #{self}"
@@ -54,7 +54,7 @@ module Prism
54
54
  end
55
55
 
56
56
  def values
57
- if is_a?(HashNode)
57
+ if respond_to_elements?
58
58
  elements.map(&:value)
59
59
  else
60
60
  raise MethodNotSupported, "values is not supported for #{self}"
@@ -62,7 +62,7 @@ module Prism
62
62
  end
63
63
 
64
64
  def hash_element(key)
65
- if is_a?(HashNode)
65
+ if respond_to_elements?
66
66
  elements.find { |element_node| element_node.key.to_value == key }
67
67
  else
68
68
  raise MethodNotSupported, "hash_pair is not supported for #{self}"
@@ -70,7 +70,7 @@ module Prism
70
70
  end
71
71
 
72
72
  def hash_value(key)
73
- if is_a?(HashNode)
73
+ if respond_to_elements?
74
74
  elements.find { |element_node| element_node.key.to_value == key }&.value
75
75
  else
76
76
  raise MethodNotSupported, "hash_value is not supported for #{self}"
@@ -104,7 +104,7 @@ module Prism
104
104
 
105
105
  # Respond key value and source for hash node
106
106
  def method_missing(method_name, *args, &block)
107
- return super unless is_a?(HashNode)
107
+ return super unless respond_to_elements?
108
108
 
109
109
  if method_name.to_s.end_with?('_element')
110
110
  key = method_name.to_s[0..-9]
@@ -121,7 +121,7 @@ module Prism
121
121
  end
122
122
 
123
123
  def respond_to_missing?(method_name, *args)
124
- return super unless is_a?(HashNode)
124
+ return super unless respond_to_elements?
125
125
 
126
126
  if method_name.to_s.end_with?('_element')
127
127
  key = method_name.to_s[0..-9]
@@ -136,5 +136,11 @@ module Prism
136
136
 
137
137
  super
138
138
  end
139
+
140
+ private
141
+
142
+ def respond_to_elements?
143
+ is_a?(HashNode) || is_a?(KeywordHashNode)
144
+ end
139
145
  end
140
146
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prism_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.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-02-10 00:00:00.000000000 Z
11
+ date: 2024-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prism