class Addressable::Template

def normalize_value(value)

Returns:
  • (Hash, Array, String) - The normalized values

Parameters:
  • value (Hash, Array, String) --
def normalize_value(value)
  # Handle unicode normalization
  if value.respond_to?(:to_ary)
    value.to_ary.map! { |val| normalize_value(val) }
  elsif value.kind_of?(Hash)
    value = value.inject({}) { |acc, (k, v)|
      acc[normalize_value(k)] = normalize_value(v)
      acc
    }
  else
    value = value.to_s if !value.kind_of?(String)
    if value.encoding != Encoding::UTF_8
      value = value.dup.force_encoding(Encoding::UTF_8)
    end
    value = value.unicode_normalize(:nfc)
  end
  value
end