From: "NAKAMURA, Hiroshi" Date: 2003-09-24T11:54:52+09:00 Subject: Re: Article on oreilly.net on how to build Unix tools with Ruby Hi, > From: "Jim Freeze" > Sent: Wednesday, September 24, 2003 7:05 AM > > > Xavier wrote: > > > > Thought you'd like to know about this article > > > > This links to the printable version, much easier to read. > > > > http://linux.oreillynet.com/lpt/a/4159 > > > > > > Nice script for handling CSVs. But it doesn't handle commas embedded in > > > double quotes (yet). > I have found that the csv parser by NaHi to be very good and > full featured. > > http://raa.ruby-lang.org/list.rhtml?name=csv And is bundled in ruby from 1.8... It can parse <<__EOS__.chomp a,b,",","""","\r\n","\r","\n" __EOS__ Of cource it must have easy interface! Any suggestion are welcome. How do you want to write parsing code? Regards, // NaHi PS. Current interface; SYNOPSIS 1. reader = CSV.open( filename, "r" ) 2. CSV.open( filename, "r" ) do | row | ... end 3. writer = CSV.open( filename, "w" ) 4. CSV.open( filename, "w" ) do | writer | ... end ARGS filename: filename to open. mode: "r" for read (parse) "w" for write (generate) row: an Array of cells which is a parsed line. writer: Created writer instance. See CSV::Writer#<< and CSV::Writer#addRow to know how to generate CSV string. RETURNS reader: Create reader instance. To get parse result, see CSV::Reader#each. writer: Created writer instance. See CSV::Writer#<< and CSV::Writer#addRow to know how to generate CSV string. DESCRIPTION Open a CSV formatted file to read or write. EXAMPLE 1 reader = CSV.open( "csvfile.csv", "r" ) row1 = reader.shift row2 = reader.shift if row2.empty? p "row2 not find." end reader.close EXAMPLE 2 CSV.open( "csvfile.csv", "r" ) do | row | p row end EXAMPLE 3 writer = CSV.open( "csvfile.csv", "w" ) writer << [ "r1c1", "r1c2" ] << [ "r2c1", "r2c2" ] << [ nil, nil ] writer.close EXAMPLE 4 CSV.open( "csvfile.csv", "w" ) do | writer | writer << [ "r1c1", "r1c2" ] writer << [ "r2c1", "r2c2" ] writer << [ nil, nil ] end