Class: Mj::HashUtils::JsonKeyNormalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/mj/hash_utils/json_key_normalizer.rb

Instance Method Summary collapse

Instance Method Details

#camelize_key(key) ⇒ Object

:reek:TooManyStatements



13
14
15
16
17
18
19
# File 'lib/mj/hash_utils/json_key_normalizer.rb', line 13

def camelize_key(key)
  key = key.to_s
  key = key.sub(%r{^(?:(?=\b|[A-Z_])|\w)/}) { ::Regexp.last_match(0).downcase }
  key.gsub(%r{(?:_|(/))([a-z\d]*)}) do
    "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}"
  end.gsub("/", "::").to_sym
end

#normalize(item_or_collection) ⇒ Object



6
7
8
9
10
# File 'lib/mj/hash_utils/json_key_normalizer.rb', line 6

def normalize(item_or_collection)
  KeyTransformer.new.transform(item_or_collection) do |key|
    camelize_key(key)
  end
end