[ANN] FasterCSV 0.2.0 -- The user requests release!

FasterCSV 0.2.0 Released

···

========================

FasterCSV has a ton of new features from requests (some even provided patches) by you! It's very hard for me to pick what to show off here, but if I had to pick two favorites it would be using an Array of headers and the new shortcut interface.

Since 0.1.6, FasterCSV has allowed named access for columns. Now you can say goodbye to indexes altogether as Dakshinamurthy Karra has sent in a patch allowing you to specify an Array of headers to use for any document. Just setup the headers when you create the instance and it's nothing but names you'll have to worry about from then on.

Ara.T.Howard also sent in a patch for a short but powerful interface extension. Check this out:

   FCSV { |csv_out| csv_out << %w{my data here} } # to STDOUT
   FCSV(csv = "") { |csv_str| csv_str << %w{my data here} } # to a String
   FCSV(STDERR) { |csv_err| csv_err << %w{my data here} } # to STDERR

You can wrap IO objects with that, change options, or whatever. It also caches the instance so subsequent calls won't invent another FasterCSV object.

There's a lot more in this release though, including serialization similar to what Hal Fulton described in his metaprogramming article and a CSV compatibility layer for easy transitioning.

If you work with CSV data, you want to download this release, trust me!

What is FasterCSV?
------------------

(from the README)

FasterCSV is intended as a replacement to Ruby's standard CSV library. It was designed to address concerns users of that library had and it has three primary goals:

1. Be significantly faster than CSV while remaining a pure Ruby library.
2. Use a smaller and easier to maintain code base. (We're about even now,
     but not if you compare the features!)
3. Improve on the CSV interface.

What's New?
-----------

(highlights from the CHANGELOG)

* Made FasterCSV#lineno CSV aware.
* Added line numbers to MalformedCSVError messages.
* <tt>:headers</tt> can now be set to an Array of headers to use.
* <tt>:headers</tt> can now be set to an external CSV String of headers to use.
* Added an <tt>:unconverted_fields</tt> options, so those can be returned
   when needed.
* Provided support for the serialization of custom Ruby objects using CSV.
* Added CSV drop-in interface.
* Added header information to FieldInfo Struct for conversions by header.
* Added an alias to support <tt>require "fastercsv"</tt>.
* Added FasterCSV::instance and FasterCSV()/FCSV() shortcuts for easy output.

Migrating from CSV to FasterCSV?
--------------------------------

The README includes a section on the differences and you can read that here:

http://fastercsv.rubyforge.org/

You call also see general usage in the documentation of the interface, right here:

http://fastercsv.rubyforge.org/classes/FasterCSV.html

For quick and dirty switching, try:

   begin
     require "faster_csv"
     FasterCSV.build_csv_interface
   rescue LoadError
     require "csv"
   end
   # ... use CSV here ...

If FasterCSV isn't meeting your needs, I want to here about it:

james@grayproductions.net

Where can I learn more?
-----------------------

FasterCSV is hosted on RubyForge.

Project page: http://rubyforge.org/projects/fastercsv/
Documentation: http://fastercsv.rubyforge.org/
Downloads: http://rubyforge.org/frs/?group_id=1102

How do I get FasterCSV?
-----------------------

FasterCSV is a gem, so as long as you have RubyGems installed it's as simple as:

$ sudo gem install fastercsv

If you need to install RubyGems, you can download it from:

http://rubyforge.org/frs/?group_id=126&release_id=2471

FasterCSV can also be installed manually. Just download the latest release and follow the instructions in INSTALL:

http://rubyforge.org/frs/?group_id=1102&release_id=4758

James Edward Gray II

Awesome, thank you!

James Edward Gray II wrote:

···

FasterCSV 0.2.0 Released

FasterCSV has a ton of new features from requests (some even provided patches) by you! It's very hard for me to pick what to show off here, but if I had to pick two favorites it would be using an Array of headers and the new shortcut interface.

Since 0.1.6, FasterCSV has allowed named access for columns. Now you can say goodbye to indexes altogether as Dakshinamurthy Karra has sent in a patch allowing you to specify an Array of headers to use for any document. Just setup the headers when you create the instance and it's nothing but names you'll have to worry about from then on.

Ara.T.Howard also sent in a patch for a short but powerful interface extension. Check this out:

  FCSV { |csv_out| csv_out << %w{my data here} } # to STDOUT
  FCSV(csv = "") { |csv_str| csv_str << %w{my data here} } # to a String
  FCSV(STDERR) { |csv_err| csv_err << %w{my data here} } # to STDERR

You can wrap IO objects with that, change options, or whatever. It also caches the instance so subsequent calls won't invent another FasterCSV object.

There's a lot more in this release though, including serialization similar to what Hal Fulton described in his metaprogramming article and a CSV compatibility layer for easy transitioning.

If you work with CSV data, you want to download this release, trust me!

What is FasterCSV?
------------------

(from the README)

FasterCSV is intended as a replacement to Ruby's standard CSV library. It was designed to address concerns users of that library had and it has three primary goals:

1. Be significantly faster than CSV while remaining a pure Ruby library.
2. Use a smaller and easier to maintain code base. (We're about even now,
    but not if you compare the features!)
3. Improve on the CSV interface.

What's New?
-----------

(highlights from the CHANGELOG)

* Made FasterCSV#lineno CSV aware.
* Added line numbers to MalformedCSVError messages.
* <tt>:headers</tt> can now be set to an Array of headers to use.
* <tt>:headers</tt> can now be set to an external CSV String of headers to use.
* Added an <tt>:unconverted_fields</tt> options, so those can be returned
  when needed.
* Provided support for the serialization of custom Ruby objects using CSV.
* Added CSV drop-in interface.
* Added header information to FieldInfo Struct for conversions by header.
* Added an alias to support <tt>require "fastercsv"</tt>.
* Added FasterCSV::instance and FasterCSV()/FCSV() shortcuts for easy output.

Migrating from CSV to FasterCSV?
--------------------------------

The README includes a section on the differences and you can read that here:

http://fastercsv.rubyforge.org/

You call also see general usage in the documentation of the interface, right here:

http://fastercsv.rubyforge.org/classes/FasterCSV.html

For quick and dirty switching, try:

  begin
    require "faster_csv"
    FasterCSV.build_csv_interface
  rescue LoadError
    require "csv"
  end
  # ... use CSV here ...

If FasterCSV isn't meeting your needs, I want to here about it:

james@grayproductions.net

Where can I learn more?
-----------------------

FasterCSV is hosted on RubyForge.

Project page: http://rubyforge.org/projects/fastercsv/
Documentation: http://fastercsv.rubyforge.org/
Downloads: http://rubyforge.org/frs/?group_id=1102

How do I get FasterCSV?
-----------------------

FasterCSV is a gem, so as long as you have RubyGems installed it's as simple as:

$ sudo gem install fastercsv

If you need to install RubyGems, you can download it from:

http://rubyforge.org/frs/?group_id=126&release_id=2471

FasterCSV can also be installed manually. Just download the latest release and follow the instructions in INSTALL:

http://rubyforge.org/frs/?group_id=1102&release_id=4758

James Edward Gray II