Project

recite_csv

0.0
A long-lived project that still receives updates
ReciteCSV assists to implement a class for CSV reader. A reader class implemented by ReciteCSV iterate each row as PORO(Plain Old Ruby Object).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
 Project Readme

ReciteCSV

ReciteCSV assists to implement a class for CSV reader.
A reader class implemented by ReciteCSV iterate each row as PORO(Plain Old Ruby Object).

Gem Version Build Maintainability

Installation

Add this line to your application's Gemfile:

gem 'recite_csv'

And then execute:

$ bundle

Or install it yourself as:

$ gem install recite_csv

Usage

The following is a example csv file.

COL1,COL2
VALUE1,VALUE2
VALUE3,VALUE4

Specify header definition using hash object.

class Foo
  include ReciteCSV::Reader::Builder.new(col1: "COL1", col2: "COL2")
end

Foo.new("./example.csv").each do |row|
  row.class # => Foo::Row
  row.col1
  row.col2
end

Specify header definition using array object.

class Bar
  include ReciteCSV::Reader::Builder.new(%w[col1 col2])
end

Bar.new("./example.csv").each do |row|
  row.class # => Bar::Row
  row.col1
  row.col2
end

Define custom methods of row object.

class Baz
  include(
    ReciteCSV::Reader::Builder.new(col1: "COL1", col2: "COL2") do
      # define methods of Row class
      def col1
        "override #{super}"
      end

      def custom_method
        # do somethings..
      end
    end
  )
end

Baz.new("./example.csv").each do |row|
  row.class # => Baz::Row
  row.col1
  row.col2
  row.custom_method
end

Define custom methods of row object using row_methods.

class Qux
  include ReciteCSV::Reader::Builder.new(col1: "COL1", col2: "COL2")

  row_methods do
    def col1
      "override #{super}"
    end

    def custom_method
      # do somethings..
    end
  end
end

Qux.new("./example.csv").each do |row|
  row.class # => Qux::Row
  row.col1
  row.col2
  row.custom_method
end

Specify file mode and encoding.

class Quux
  include ReciteCSV::Reader::Builder.new(col1: "COL1", col2: "COL2")
end

Quux.new("./example.csv", file_options: "rb:UTF-8").each do |row|
  # do something
end

Convert encoding.

class Corge
  include ReciteCSV::Reader::Builder.new(col1: "COL1", col2: "COL2")
end

Corge.new("./example.csv", file_options: ["rb:Shift_JIS:UTF-8", invalid: :replace, undef: :replace]).each do |row|
  # do something
end

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/yujideveloper/recite_csv.

License

The gem is available as open source under the terms of the MIT License.