-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Ara.T.Howard wrote:
>> require 'arrayfields'
>> class MyRow < Array
>>  include ArrayFields # I don't like destructive lib... 2c.
> 
> me neither - note that a 'require "arrayfields"' adds only one method to
> Array
> though - an Array __object__ is exteneded with ArrayFields __only__ if the
> fields are set.  eg

Sure.

> here b has only a 'fields=' method in addition to regular Array methods.  a
> has all the ArrayFields behaviour.  but maybe you probably knew that... ;-)

I tend to dislike changing duck-signature with library requiring.

0% cat a.rb
require 'yaml' # or 'arrayfields'
require 'b'
0% cat b.rb
obj = []
obj.to_yaml # or obj.fields = []
0% ruby a.rb
0% ruby b.rb
b.rb:2: undefined method `to_yaml' for []:Array (NoMethodError)

I cannot know what b.rb expecting with checking b.rb.

>> // NaHi_165 (http://jp.ctor.org/d/nahi_2005-10-25.html#self.2eto_i)
> 
>                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> why all the food?  it looks good - but i can't read ;-)

Do you know any Japanese?
(y/n): n
0 points  :-)

Just recording what I ate.  Anyway these are all off topic now.  Back to
faster CSV...

Of course we usually start CSV parser with String#split, String#scan,
then RegExp.  Me, too.  The initial ruby book published in 1999 contains
4 types of csv_split methods.  Matz, too.

The reasons why the current csv.rb has its state machine are;
 * parsing IO without exhausting memory
 * coverage measurement
 * fs and rs customize

You can parse IO with RegExp.  IO#gets, scan with RegExp, concatenate
the rest with the next line and continue.  It should be faster and it
can be clearer(?) than the current csv.rb.  I'm just an author of
current csv.rb.  Matz will supersede it with another one if it's enough
good.

Regards,
// NaHi
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Cygwin)

iD8DBQFDaawEf6b33ts2dPkRAk3iAJ9qgQygiE8m98Z3NqioZMVPj8XSWgCguITz
n01P884SMbr4151BQM3addE=
=Few/
-----END PGP SIGNATURE-----