Class: Sunrise::Utils::CsvDocument
- Inherits:
-
Object
- Object
- Sunrise::Utils::CsvDocument
- Defined in:
- lib/sunrise/utils/csv_document.rb
Instance Method Summary collapse
- #columns_names ⇒ Object
- #each_with_index ⇒ Object
- #filename ⇒ Object
- #human_columns_names ⇒ Object
-
#initialize(source, options = {}) ⇒ CsvDocument
constructor
A new instance of CsvDocument.
- #render ⇒ Object
Constructor Details
#initialize(source, options = {}) ⇒ CsvDocument
Returns a new instance of CsvDocument.
6 7 8 9 10 |
# File 'lib/sunrise/utils/csv_document.rb', line 6 def initialize(source, = {}) @source = source @options = @klass = (@options.delete(:klass) || extract_klass) end |
Instance Method Details
#columns_names ⇒ Object
12 13 14 |
# File 'lib/sunrise/utils/csv_document.rb', line 12 def columns_names @columns_names ||= (@options[:columns] || @klass.column_names) end |
#each_with_index ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/sunrise/utils/csv_document.rb', line 39 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 ⇒ Object
20 21 22 |
# File 'lib/sunrise/utils/csv_document.rb', line 20 def filename @filename ||= [(@options[:filename] || @klass.model_name.plural || "document"), ".csv"].join end |
#human_columns_names ⇒ Object
16 17 18 |
# File 'lib/sunrise/utils/csv_document.rb', line 16 def human_columns_names @human_columns_names ||= columns_names.map { |column| @klass.human_attribute_name(column.to_s) } end |
#render ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sunrise/utils/csv_document.rb', line 24 def render csv_string = ::CSV.generate do |csv| csv << human_columns_names each_with_index do |record, index| row = columns_names.inject([]) do |result, column| result << record.send(column) result end csv << row end end end |