Class: Hash

Inherits:
Object show all
Includes:
Rupture::Fn, Rupture::Map
Defined in:
lib/rupture/fn.rb,
lib/rupture/hash_map.rb,
lib/rupture/rails_ext.rb

Instance Method Summary collapse

Methods included from Rupture::Map

#assoc, #associate, #destruct, #into, #map?, #update, #update_each

Methods included from Rupture::Fn

#<<, #>>, #arity, #block, #comp, #complement, #fnil, #partial, #rpartial, #to_proc

Instance Method Details

#as_mapObject Also known as: ~



20
21
22
# File 'lib/rupture/hash_map.rb', line 20

def as_map
  F.hash_map(self)
end

#assoc!(*vals) ⇒ Object



25
26
27
28
29
30
# File 'lib/rupture/hash_map.rb', line 25

def assoc!(*vals)
  vals.each_slice(2) do |k,v|
    self[k] = v
  end
  self
end

#deep_symbolize_keysObject



20
21
22
23
24
25
26
# File 'lib/rupture/rails_ext.rb', line 20

def deep_symbolize_keys
  copy = symbolize_keys
  copy.each do |key, val|
    copy[key] = val.deep_symbolize_keys if val.is_a?(Hash)
  end
  copy
end

#deep_symbolize_keys!Object



13
14
15
16
17
18
# File 'lib/rupture/rails_ext.rb', line 13

def deep_symbolize_keys!
  values.each do |val|
    val.deep_symbolize_keys! if val.is_a?(Hash)
  end
  symbolize_keys!
end

#stringify_keysObject



35
36
37
# File 'lib/rupture/rails_ext.rb', line 35

def stringify_keys
  dup.stringify_keys!
end

#stringify_keys!Object



28
29
30
31
32
33
# File 'lib/rupture/rails_ext.rb', line 28

def stringify_keys!
  keys.each do |key|
    self[key.to_s] = delete(key)
  end
  self
end

#symbolize_keysObject



9
10
11
# File 'lib/rupture/rails_ext.rb', line 9

def symbolize_keys
  dup.symbolize_keys!
end

#symbolize_keys!Object



2
3
4
5
6
7
# File 'lib/rupture/rails_ext.rb', line 2

def symbolize_keys!
  keys.each do |key|
    self[(key.to_sym rescue key) || key] = delete(key)
  end
  self
end

#update!(key, fn = nil, *args, &block) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/rupture/hash_map.rb', line 32

def update!(key, fn = nil, *args, &block)
  self[key] = if fn
    fn.call(self[key], *args, &block)
  else
    yield(self[key])
  end
  self
end

#update_each!(keys, *args, &block) ⇒ Object



41
42
43
44
45
46
# File 'lib/rupture/hash_map.rb', line 41

def update_each!(keys, *args, &block)
  keys.each do |key|
    update!(key, *args, &block)
  end
  self
end