James Gray
3/1/2006 8:54:00 PM
On Mar 1, 2006, at 2:31 PM, dblack@wobblini.net wrote:
> Hi --
>
> On Wed, 1 Mar 2006, ara.t.howard@noaa.gov wrote:
>
>> it's pretty dang easy to do already:
>>
>> harp:~ > cat a.rb
>> animal, sound = %w[dog cat bird], %w[woof meow cheep]
>> require 'yaml' and y Hash[*animal.zip(sound).flatten]
>>
>>
>> harp:~ > ruby a.rb
>> ---
>> cat: meow
>> bird: cheep
>> dog: woof
>
> A good opportunity for my annual plug for the flattenx extension :-)
> (On RAA, still, I think.) It lets you flatten by any number of
> levels, so that you can use that technique even with nested arrays.
It's not too hard to allow nested Arrays in Hash construction even
without the library:
>> arr = [[:one, 1], [:two, %w{an Array}], [:three, 2]]
=> [[:one, 1], [:two, ["an", "Array"]], [:three, 2]]
>> Hash[*arr.inject(Array.new) { |args, a| args.push(*a) }]
=> {:two=>["an", "Array"], :three=>2, :one=>1}
James Edward Gray II