instance method
Prism::Pattern#compile_hash_pattern_node
compile_hash_pattern_node(node)
lib/prism/pattern.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/pattern.rb, line 185
def compile_hash_pattern_node(node)
compile_error(node) if node.rest
compiled_constant = compile_node(node.constant) if node.constant
preprocessed =
node.elements.to_h do |element|
key = element.key
if key.is_a?(SymbolNode)
[key.unescaped.to_sym, compile_node(element.value)]
else
raise CompilationError, element.inspect
end
end
compiled_keywords = ->(other) do
deconstructed = other.deconstruct_keys(preprocessed.keys)
preprocessed.all? do |keyword, matcher|
deconstructed.key?(keyword) && matcher.call(deconstructed[keyword])
end
end
if compiled_constant
combine_and(compiled_constant, compiled_keywords)
else
compiled_keywords
end
end
in InstanceVariableReadNode[name: Symbol] in { name: Symbol }
See also
#compile_error
#compile_nil_node
#compile_constant_read_node
#compile_node
also in
3.4 · 3.3