Class: Darthjee::CoreExt::Hash::KeyChanger

Inherits:
Object
  • Object
show all
Defined in:
lib/darthjee/core_ext/hash/key_changer.rb

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ KeyChanger

Returns a new instance of KeyChanger.



7
8
9
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 7

def initialize(hash)
  @hash = hash
end

Instance Method Details

#camelize_keys(settings = {}) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 31

def camelize_keys(settings = {})
  merge_options({
                  uppercase_first_letter: true
                }, settings)

  type = options[:uppercase_first_letter] ? :upper : :lower

  change_keys do |k|
    k.camelize(type)
  end
end

#change_keys(settings = {}, &block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 19

def change_keys(settings = {}, &block)
  merge_options({
                  recursive: true
                }, settings)

  if options[:recursive]
    hash.deep_transform_keys!(&block)
  else
    hash.transform_keys!(&block)
  end
end

#change_text(options = {}) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 49

def change_text(options = {})
  merge_options({
                  type: :keep
                }, options)

  change_keys do |key|
    cast_new_key yield(key), key.class
  end
end

#remap(keys_map) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 11

def remap(keys_map)
  new_hash = {}
  keys_map.each do |o, n|
    new_hash[n] = hash.delete(o)
  end
  hash.merge! new_hash
end

#underscore_keys(settings = {}) ⇒ Object



43
44
45
46
47
# File 'lib/darthjee/core_ext/hash/key_changer.rb', line 43

def underscore_keys(settings = {})
  merge_options({}, settings)

  change_keys(&:underscore)
end