friendly nested hashes in ruby
get the code. so basically, i built:
Hash#deep_clone Hash#multilevel_keys Hash#get_value_at_multilevel_key Hash#set_value_at_multilevel_key Hash#multilevel_merge! Hash#multilevel_merge Hash#multilevel_reverse_merge! Hash#multilevel_reverse_merge
so what’s multilevel? maybe i should call it “nested” instead. oh well, too late now. how’s it work??
the primitives:
>> h = {'a' => {'b' => {'c' => 1}}, 'd' => 2, 'e' => 3}
=> {"a"=>{"b"=>{"c"=>1}}, "d"=>2, "e"=>3}
>> h.multilevel_keys
=> ["a.b.c", "d", "e"]
>> h['a']['b']['c']
=> 1
>> h.get_value_at_multilevel_key 'a.b.c'
=> 1
>> h['a']['b']['c'] = 2
=> 2
>> h.get_value_at_multilevel_key 'a.b.c'
=> 2
>> h.set_value_at_multilevel_key 'a.b.c', 3
=> 3
>> h['a']['b']['c']
=> 3
more advanced, built atop the primitives:
# merge
>> j = h.multilevel_merge 'a.b.c' => 99
=> {"a"=>{"b"=>{"c"=>99}}, "d"=>2, "e"=>3}
# reverse merge
>> j = h.multilevel_reverse_merge 'a.b.c' => 99
=> {"a"=>{"b"=>{"c"=>3}}, "d"=>2, "e"=>3}
so, if you had a multilevel hash, now it’s easy to index into it, and merge new parameters into it without doing lots of nested stuff.
About this entry
You’re currently reading “friendly nested hashes in ruby,” an entry on e-huned.com
- Published:
- 07.03.07 / 6pm
- Category:
- personal
No comments
Jump to comment form | comments rss [?] | trackback uri [?]