From: James Edward Gray II Date: 2007-05-08T06:49:24+09:00 Subject: Re: using YAML as config On May 7, 2007, at 2:14 PM, Rover Rhubarb wrote: > and want my array of channels to look something like this > > - Channel > name: foo > id: 3 > - Channel > name: bar > id: 4 Hope this helps: class Channel < Struct.new(:name, :id) def self.parse(io) io.inject(Array.new) do |channels, line| if line =~ /\bChannel\b/ channels << new elsif not channels.empty? and line =~ /\A\s+(name|id):\s+(.+)/ channels.last.send("#{$1}=", $2) end channels end end end if __FILE__ == $PROGRAM_NAME p Channel.parse(DATA) end __END__ - Channel name: foo id: 3 - Channel name: bar id: 4 James Edward Gray II