From: James Edward Gray II Date: 2005-12-02T11:24:28+09:00 Subject: Re: Labelled text file parsing... On Dec 1, 2005, at 7:57 PM, CBlair1986 wrote: > Hi. What I'd like to do is to take a file like so: > --- > Apple > Color: Red > Peel: Yes > Has Core: Yes > > Orange > Color: Orange > Peel: Yes > Has Core: No > --- > and go through it, line by line, assigning the 'Apple' and 'Orange' > lines to a name attribute on different hashes, and then using the name > before the colons such as 'Color' and 'Peel' as keys for the > respective > values. > > I'm just asking for a bit of help and guidance, as I'm still not very > keen on using regular expressions that comfortably and all. > > Thanks to anyone who helps! I'm in a terrible rush, but see if this code gets you going. Ask questions if you have them and I'll answer later... James Edward Gray II #!/usr/local/bin/ruby -w require "pp" data = Hash.new DATA.each_line("") do |para| if para.sub!(/\A *(.+?) *\n/, "") data[$1] = Hash[*para.split("\n").map { |line| line.split(/: \s*/) }.flatten] end end pp data __END__ Apple Color: Red Peel: Yes Has Core: Yes Orange Color: Orange Peel: Yes Has Core: No