From: Robert Klemme Date: 2010-07-02T06:15:06+09:00 Subject: Re: Reading String Data as a File On 01.07.2010 16:14, James Edward Gray II wrote: > On Jul 1, 2010, at 4:02 AM, Robert Klemme wrote: > >> 2010/7/1 James Edward Gray II: >>> On Jun 30, 2010, at 10:41 AM, Brian Candler wrote: >>> >>>> James Edward Gray II wrote: >>>>> I'm open to suggestions and I do take patches. >>>> >>>> Specifically, I'd like to see how to parse CSV from stdin. You >>>> provide an example in the opposite direction: >>>> >>>> # FCSV($stderr) { |csv_err| csv_err<< %w{my data here} } >>>> # to $stderr >>> >>> On Jun 30, 2010, at 11:35 AM, Robert Klemme wrote: >>> >>>> On 30.06.2010 17:05, James Edward Gray II wrote: >>>>> >>>>> Do you think it would help if I added Wrapping an IO under >>>>> the Shortcut Interface on this page? >>>>> >>>>> http://fastercsv.rubyforge.org/classes/FasterCSV.html >>>> >>>> +1 >>> >>> Better? >>> >>> http://fastercsv.rubyforge.org/classes/FasterCSV.html >> >> Perfect! Do you think it is a good idea to also allow an IO as >> argument to foreach so we can save a block? >> >> FCSV($stdin) { |csv_in| csv_in.each { |row| p row } } # from >> $stdin >> >> would become >> >> FCSV.foreach($stdin) { |row| p row } # from $stdin > > I would rather not go that far. The standard CSV library for Ruby > 1.8 varied its interface slightly from the IO methods I assumed it > meant to imitate. For example, open() was essentially foreach() when > you passed an "r" mode. This always bothered me. > > We don't need two blocks though. I showed it that way in the > documentation for consistency (to hopefully make it easier to > remember), but this works: > > $ echo -e 'a,b,c' | ruby -rubygems -e 'require "faster_csv"; > FCSV($stdin).each { |row| p row }' ["a", "b", "c"] Good point. Thank you for consideration of my suggestion. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/