A collection of utilities for working with Hashes.
Recursive hash-merge function
# File lib/treequel/mixins.rb, line 260 def merge_recursively( key, oldval, newval ) case oldval when Hash case newval when Hash oldval.merge( newval, &method(:merge_recursively) ) else newval end when Array case newval when Array oldval | newval else newval end else newval end end
Normalize the attributes in hash
to be of the form expected by
the LDAP library (i.e., keys as Strings, values
as Arrays of Strings)
# File lib/treequel/mixins.rb, line 285 def normalize_attributes( hash ) normhash = {} hash.each do |key,val| val = [ val ] unless val.is_a?( Array ) val.collect! {|obj| obj.to_s } normhash[ key.to_s ] = val end normhash.delete( 'dn' ) return normhash end
Return a version of the given hash
with its keys transformed
into Strings from whatever they were before.
# File lib/treequel/mixins.rb, line 224 def stringify_keys( hash ) newhash = {} hash.each do |key,val| if val.is_a?( Hash ) newhash[ key.to_s ] = stringify_keys( val ) else newhash[ key.to_s ] = val end end return newhash end
Return a duplicate of the given hash
with its identifier-like
keys transformed into symbols from whatever they were before.
# File lib/treequel/mixins.rb, line 241 def symbolify_keys( hash ) newhash = {} hash.each do |key,val| keysym = key.to_s.dup.untaint.to_sym if val.is_a?( Hash ) newhash[ keysym ] = symbolify_keys( val ) else newhash[ keysym ] = val end end return newhash end