# File lib/hobo_support/hash.rb, line 46 def &(keys) res = {} keys.each {|k| res[k] = self[k] if has_key?(k)} res end
# File lib/hobo_support/hash.rb, line 40 def -(keys) res = {} each_pair {|k, v| res[k] = v unless k.in?(keys)} res end
# File lib/hobo_support/hash.rb, line 58 def compact res = {} each { |k, v| res[k] = v unless v.nil? } res end
# File lib/hobo_support/hash.rb, line 64 def compact! keys.each { |k| delete(k) if self[k].nil? } end
# File lib/hobo_support/hash.rb, line 54 def get(*args) args.map {|a| self[a] } end
# File lib/hobo_support/hash.rb, line 10 def map_hash(&b) res = {} each {|k,v| res[k] = b.arity == 1 ? yield(v) : yield(k, v) } res end
# File lib/hobo_support/hash.rb, line 16 def partition_hash(keys=nil) yes = {} no = {} each do |k,v| if block_given? ? yield(k,v) : keys.include?(k) yes[k] = v else no[k] = v end end [yes, no] end
# File lib/hobo_support/hash.rb, line 29 def recursive_update(hash) hash.each_pair do |key, value| current = self[key] if current.is_a?(Hash) and value.is_a?(Hash) current.recursive_update(value) else self[key] = value end end end
# File lib/hobo_support/hash.rb, line 3 def select_hash(&b) res = {} each {|k,v| res[k] = v if (b.arity == 1 ? yield(v) : yield(k, v)) } res end