class Sunrise::Utils::CsvDocument
Public Class Methods
new(source, options = {})
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 8 def initialize(source, options = {}) @source = source @options = options @klass = (@options.delete(:klass) || extract_klass) end
Public Instance Methods
columns_names()
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 14 def columns_names @columns_names ||= (@options[:columns] || @klass.column_names) end
each_with_index() { |item, count| ... }
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 40 def each_with_index count = 0 if @source.respond_to?(:find_each) @source.find_each do |item| yield item, count count += 1 end else Array.wrap(@source).each do |item| yield item, count count += 1 end end end
filename()
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 22 def filename @filename ||= [(@options[:filename] || @klass.model_name.plural || 'document'), '.csv'].join end
human_columns_names()
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 18 def human_columns_names @human_columns_names ||= columns_names.map { |column| @klass.human_attribute_name(column.to_s) } end
render()
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 26 def render csv_string = ::CSV.generate do |csv| csv << human_columns_names each_with_index do |record, _index| row = columns_names.each_with_object([]) do |column, result| result << record.send(column) end csv << row end end end
Protected Instance Methods
extract_klass()
click to toggle source
# File lib/sunrise/utils/csv_document.rb, line 58 def extract_klass if @source.respond_to?(:klass) @source.klass elsif @source.is_a?(Array) @source.first.try(:class) else @source.class end end