Module: Agents::Helpers::HashNormalizer

Defined in:
lib/agents/helpers/hash_normalizer.rb

Class Method Summary collapse

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.

Raises:

  • (ArgumentError)


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