Module: Agents::Helpers::HashNormalizer
- Defined in:
- lib/agents/helpers/hash_normalizer.rb
Class Method Summary collapse
- .merge(base, override) ⇒ Object
-
.normalize(input, label:, freeze_result: false) ⇒ Object
NOTE: freeze_result performs a shallow freeze on the top-level hash only.
Class Method Details
.merge(base, override) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/agents/helpers/hash_normalizer.rb', line 20 def merge(base, override) return override if base.empty? return base if override.empty? base.merge(override) end |
.normalize(input, label:, freeze_result: false) ⇒ Object
NOTE: freeze_result performs a shallow freeze on the top-level hash only. Nested values remain mutable — e.g. hash[:key] = “x” would succeed.
10 11 12 13 14 15 16 17 18 |
# File 'lib/agents/helpers/hash_normalizer.rb', line 10 def normalize(input, label:, freeze_result: false) return freeze_result ? {}.freeze : {} if input.nil? || (input.respond_to?(:empty?) && input.empty?) hash = input.respond_to?(:to_h) ? input.to_h : input raise ArgumentError, "#{label} must be a Hash or respond to #to_h" unless hash.is_a?(Hash) result = hash.transform_keys { |key| key.is_a?(Symbol) ? key : key.to_sym } freeze_result ? result.freeze : result end |