From: Jon Egil Strand Date: 2007-01-06T06:23:28+09:00 Subject: Re: CSV ORM Gregory and James Thank you so much for your precise and speedy replies, I am thankful both for your suggestions and for your effort in building these libraries. With FasterCSV I espescially like the ability to set :headers => "my;custom;header" and with ruport it seems very covenient to add some simple logic within the Ruport::Data::Record class. James - your code example is very neat, but since I'm blessed with a simple mind I traded space for readability: ------------------------------------------------- FROM ------------------------------------------------- people = FCSV(data, :col_sep => ";", :headers => true, :header_converters => :symbol ) do |csv| csv.inject(Array.new) { |all, person| all + [OpenStruct.new(person.to_hash)] } end # example usage puts people.map { |person| person.first_name } ------------------------------------------------- TO ------------------------------------------------- people = Array.new FCSV(data, :col_sep => ";", :headers => true, :header_converters => :symbol ) do |csv| csv.each do |csvrow| people.push OpenStruct.new(csvrow.to_hash) end end people.each do |person| puts person.first_name end ------------------------------------------------- Not meaning to bash your suggestion, just sharing my initial reaction. Any comments or caveats? Anyway, both your suggestions surpass my needs though, so from here on in it's a breeze. Thank you. JE