Module: Hash::HashExtensions

Included in:
Hash
Defined in:
lib/libmatty/hash.rb

Defined Under Namespace

Classes: KeyRequired

Instance Method Summary collapse

Instance Method Details

#allow_keys(*keys) ⇒ Object

Model.create(params.deny_keys(:password, :isadmin))



10
11
12
13
14
# File 'lib/libmatty/hash.rb', line 10

def allow_keys(*keys)
    tmp = self.clone
    tmp.delete_if {|k,v| ! keys.include?(k) }
    tmp
end

#allow_keys!(*keys) ⇒ Object



16
17
18
# File 'lib/libmatty/hash.rb', line 16

def allow_keys!(*keys)
    delete_if{|k,v| ! keys.include?(k) }
end

#demand(*args) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/libmatty/hash.rb', line 38

def demand(*args)
    args.each do |a|
        if not self.has_key? a
            raise KeyRequired, "option #{ a } required"
        end
    end
end

#deny_keys(*keys) ⇒ Object

Filter a list of keys, rejecting the ones we don't want to allow through.



22
23
24
25
26
# File 'lib/libmatty/hash.rb', line 22

def deny_keys(*keys)
    tmp = self.clone
    tmp.delete_if {|k,v| keys.include?(k) }
    tmp
end

#flipObject

XXX does the same thing as Hash#invert i think?



4
5
6
# File 'lib/libmatty/hash.rb', line 4

def flip
    map {|k,v| [v,k]}.to_hash
end

#xfrm(opts = {}) ⇒ Object

:foo=>"bar".xfrm(:foo => :meep) ==> :meep=>"bar"



29
30
31
32
33
34
35
# File 'lib/libmatty/hash.rb', line 29

def xfrm(opts={})
    self.map do |k,v|
        x = [opts.fetch(k, k), v]
        pp x
        x
    end.to_h
end