From: Phrogz Date: 2007-12-05T00:20:08+09:00 Subject: Re: hash On Dec 4, 7:30 am, Johnathan Smith wrote: > iv started writing a class which reads the data from a text file and > counts the number of Tags > > however im having a struggle as I want to split the tag and the data > into a hash i.e the Tag is the index and the data is the rest > > if anyone could provide me with any psuedo code i'd be very appreciative > my code is below > > Many Thanks > > text file: > > Tag: ref1 > Type: Book > Author: Little, S R > > Tag: ref2 > Type: Journal > Author: Smith, J > > Tag: ref3 > Type: Conference Paper > Author: Williams, M > > Tag: ref4 > Type: Book > Author: Jones, M B info = {} last_tag = nil # Could be File.readlines DATA.each_line{ |line| _, key, data = line.match( /^(\w+): (.+)/ ).to_a next unless key # skip blank lines if key == "Tag" last_tag = data info[ data ] = {} else info[ last_tag ][ key ] = data end } require 'pp' pp info #=> {"ref4 "=>{"Author"=>"Jones, M B", "Type"=>"Book "}, #=> "ref3 "=>{"Author"=>"Williams, M ", "Type"=>"Conference Paper "}, #=> "ref2 "=>{"Author"=>"Smith, J ", "Type"=>"Journal "}, #=> "ref1 "=>{"Author"=>"Little, S R ", "Type"=>"Book "}} __END__ Tag: ref1 Type: Book Author: Little, S R Tag: ref2 Type: Journal Author: Smith, J Tag: ref3 Type: Conference Paper Author: Williams, M Tag: ref4 Type: Book Author: Jones, M B