Sha256: d0e3a3acd07ecb188e816505e17f4c244b3a8a192b272833bb5b5e7e26c9962b

Contents?: true

Size: 1004 Bytes

Versions: 2

Compression:

Stored size: 1004 Bytes

Contents

require 'csv'
module CsvRails
  module Array
    def self.included(base)
      base.send(:remove_method, :to_csv)
      base.send(:include, CsvRails::Array::InstanceMethods)
    end

    module InstanceMethods
      # ==== Options
      # * <tt>:fields</tt> - target field names
      # * <tt>:header</tt> - header
      # * <tt>:without_header</tt> - total_count
      # * <tt>:encoding</tt> - encoding
      def to_csv(opts={})
        fields = opts[:fields]
        header = if opts[:header]
                   opts.delete(:header)
                 elsif (klass = first.class).respond_to?(:csv_header)
                   klass.csv_header(fields)
                 else
                   fields
                 end
        csv = CSV.generate do |_csv|
          _csv << header unless opts[:without_header]
          each do |element|
            _csv << element.to_csv_ary(fields, opts)
          end
        end
        opts[:encoding] ? csv.encode(opts[:encoding]) : csv
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
csv_rails-0.5.1 lib/csv_rails/array.rb
csv_rails-0.5.0 lib/csv_rails/array.rb