[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-core
Subject: Re: Planning FasterCSV (was Re: csv.rb a start on refactoring.)
From: "Ara.T.Howard" <Ara.T.Howard () noaa ! gov>
Date: 2005-10-31 5:43:57
Message-ID: Pine.LNX.4.62.0510302211400.2231 () harp ! ngdc ! noaa ! gov
[Download RAW message or body]
On Mon, 31 Oct 2005, NAKAMURA, Hiroshi wrote:
> Interesting. Do you have any idea how API should be?
>
> # rambling
> reader = CSV::Reader.create(STDIN)
> reader.set_initial_row_as_a_column_header = true # ???
> reader.each do |row|
> p row[:name], row[:age]
> end
> reader.close
>
> CSV.parse_with_initial_row_as_a_column_header(STDIN) do |row|
> ...
> end
>
> CSV.parse_with_specified_colname(STDIN, [:name, :dept, :age]) do |row|
> p row[:name], row[:age]
> end
hmmm. maybe somthing simple like
#
# assume first row as fields. slurp.
#
table = CSV::Table::new io
#
# specify fields. slurp.
#
table = CSV::Table::new io, 'fields' => %w[ name dept age ]
#
# assume first row as fields. iterator.
#
CSV::Table::parse(io) do
p row
p row.fields
end
#
# specify fields. iterator.
#
CSV::Table::parse(io, 'fields' => %w[ name dept age ]) do
p row
p row.fields
end
the options hash could by extended to accept something like type info later.
example
harp:~ > cat b.rb
require 'csv'
require 'arrayfields'
class CSV
class Table < ::Array
def initialize arg, opts = {}
fields = opts.values_at('fields', :fields).first
CSV::parse(arg) do |row|
fields = row and next unless fields
row.fields = fields
self << row
end
end
def sort_by! *a, &b
replace(sort_by(*a, &b))
end
end
end
csv = <<-csv
name,dept,age
sara,planning,24
john,security,55
csv
table = CSV::Table::new csv
p table.first['name']
p table.last['name']
table.sort_by!{|row| row['name']}
p table.first['name']
p table.last['name']
harp:~ > ruby b.rb
"sara"
"john"
"john"
"sara"
regards.
-a
--
===============================================================================
| email :: ara [dot] t [dot] howard [at] noaa [dot] gov
| phone :: 303.497.6469
| anything that contradicts experience and logic should be abandoned.
| -- h.h. the 14th dalai lama
===============================================================================
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic