public
Description: A small library intended to simplify the common steps involved with importing CSV files to a usable form in Ruby.
Homepage: http://www.pillowfactory.org/pages/csvmapper
Clone URL: git://github.com/pillowfactory/csv-mapper.git
name age message
file .gitignore Fri Dec 05 07:49:34 -0800 2008 website and docs [pillowfactory]
file History.txt Wed Aug 05 21:08:56 -0700 2009 release 0.0.4 prep [Luke Pillow]
file LICENSE Wed Dec 16 06:43:55 -0800 2009 restructuring project and switching from newgem... [pillowfactory]
file README.rdoc Tue Dec 22 22:19:48 -0800 2009 Updated docs to reflect new default target clas... [pillowfactory]
file Rakefile Tue Dec 22 20:20:17 -0800 2009 Updating Rakefile to include gem info [pillowfactory]
file VERSION Tue Dec 22 18:40:03 -0800 2009 Version bump to 0.0.5 [pillowfactory]
directory lib/ Tue Dec 22 22:21:57 -0800 2009 Removed unused require and VERSION constant [pillowfactory]
directory spec/ Tue Dec 22 22:15:47 -0800 2009 Parsing performance is now approximately 8x fas... [pillowfactory]
README.rdoc

csv-mapper

DESCRIPTION:

CsvMapper is a small library intended to simplify the common steps involved with importing CSV files to a usable form in Ruby. CsvMapper is compatible with recent 1.8 versions of Ruby as well as Ruby 1.9+

EXAMPLES:

The following example will import a CSV file to an Array of Struct instances.

Example CSV File Structure

  First Name,Last Name,Age
  John,Doe,27
  Jane,Doe,26
  Bat,Man,52
  ...etc...

Simple Usage Example

  include CsvMapper

  results = import('/path/to/file.csv') do
    start_at_row 1
    [first_name, last_name, age]
  end

  results.first.first_name  # John
  results.first.last_name   # Doe
  results.first.age         # 27

Automagical Attribute Discovery Example

  include CsvMapper

  results = import('/path/to/file.csv') do
    read_attributes_from_file
  end

  results.first.first_name  # John
  results.first.last_name   # Doe
  results.first.age         # 27

Import to ActiveRecord Example

Although CsvMapper has no dependency on ActiveRecord; it’s easy to import a CSV file to ActiveRecord models and save them.

  # Define an ActiveRecord model
  class Person < ActiveRecord::Base; end

  include CsvMapper

  results = import('/path/to/file.csv') do
    map_to Person # Map to the Person ActiveRecord class (defined above) instead of the default Struct.
    after_row lambda{|row, person| person.save }  # Call this lambda and save each record after it's parsed.

    start_at_row 1
    [first_name, last_name, age]
  end

See CsvMapper for a more detailed description

REQUIREMENTS:

FasterCSV on pre 1.9 versions of Ruby

INSTALL:

  • sudo gem install csv-mapper

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don’t break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright © 2009 Luke Pillow. See LICENSE for details.