Sha256: 8b20d52313e20a10dfa533bf515121a13034087b0cf5ea1ed0e09577e42b23ac
Contents?: true
Size: 905 Bytes
Versions: 3
Compression:
Stored size: 905 Bytes
Contents
require 'csv' module RenderCsv module CsvRenderable # Converts an array to CSV formatted string # Options include: # :only => [:col1, :col2] # Specify which columns to include # :except => [:col1, :col2] # Specify which columns to exclude # :add_methods => [:method1, :method2] # Include addtional methods that aren't columns def to_csv(options = {}) return '' if empty? return join(',') unless first.class.respond_to? :column_names columns = first.class.column_names columns &= options[:only].map(&:to_s) if options[:only] columns -= options[:except].map(&:to_s) if options[:except] columns += options[:add_methods].map(&:to_s) if options[:add_methods] CSV.generate(encoding: 'utf-8') do |row| row << columns self.each do |obj| row << columns.map { |c| obj.send(c) } end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
render_csv-2.1.0.beta1 | lib/render_csv/csv_renderable.rb |
render_csv-2.0.0 | lib/render_csv/csv_renderable.rb |
render_csv-2.0.0.beta2 | lib/render_csv/csv_renderable.rb |