From 5a96aeb0b9c1d36bc1528d10ae1d94858019cc23 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Sun, 23 Aug 2026 13:20:00 +0200 Subject: [PATCH] feat(support): add params hash with indifferent access --- lib/prism/params.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lib/prism/params.rb diff --git a/lib/prism/params.rb b/lib/prism/params.rb new file mode 100644 index 0000000..ac3cbb2 --- /dev/null +++ b/lib/prism/params.rb @@ -0,0 +1,36 @@ +module Prism + class Params < Hash + def self.from(source) + source.each_with_object(new) { |(key, value), acc| acc[key] = value } + end + + def [](key) + super(convert_key(key)) + end + + def []=(key, value) + super(convert_key(key), value) + end + + def fetch(key, *rest, &block) + super(convert_key(key), *rest, &block) + end + + def dig(key, *rest) + super(convert_key(key), *rest) + end + + def key?(key) + super(convert_key(key)) + end + alias_method :has_key?, :key? + alias_method :include?, :key? + alias_method :member?, :key? + + private + + def convert_key(key) + key.is_a?(Symbol) ? key.to_s : key + end + end +end