Module: Datagrid::Columns::InstanceMethods

Defined in:
lib/datagrid/columns.rb

Overview

ClassMethods

Instance Method Summary collapse

Instance Method Details

#column_by_name(name) ⇒ Object



101
102
103
# File 'lib/datagrid/columns.rb', line 101

def column_by_name(name)
  self.class.column_by_name(name)
end

#columnsObject



97
98
99
# File 'lib/datagrid/columns.rb', line 97

def columns
  self.class.columns
end

#dataObject



70
71
72
# File 'lib/datagrid/columns.rb', line 70

def data
  self.rows.unshift(self.header)
end

#data_hashObject



74
75
76
77
78
# File 'lib/datagrid/columns.rb', line 74

def data_hash
  self.assets.map do |asset|
    hash_for(asset)
  end
end

#hash_for(asset) ⇒ Object

Returns Hash where keys are column names and values are column values for the given asset



56
57
58
59
60
61
62
# File 'lib/datagrid/columns.rb', line 56

def hash_for(asset)
  result = {}
  self.class.columns.each do |column|
    result[column.name] = column.value(asset, self)
  end
  result
end

#headerObject

Returns Array of human readable column names. See also “Localization” section



44
45
46
# File 'lib/datagrid/columns.rb', line 44

def header
  self.class.columns.map(&:header)
end

#row_for(asset) ⇒ Object

Returns Array column values for given asset



49
50
51
52
53
# File 'lib/datagrid/columns.rb', line 49

def row_for(asset)
  self.class.columns.map do |column|
    column.value(asset, self)
  end
end

#rowsObject



64
65
66
67
68
# File 'lib/datagrid/columns.rb', line 64

def rows
  self.assets.map do |asset|
    self.row_for(asset)
  end
end

#to_csv(options = {}) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/datagrid/columns.rb', line 80

def to_csv(options = {})
  klass = if RUBY_VERSION >= "1.9"
            require 'csv'
            CSV
          else
            require "fastercsv"
            FasterCSV
          end
  klass.generate(
    {:headers => self.header, :write_headers => true}.merge(options)
  ) do |csv|
    self.rows.each do |row|
      csv << row
    end
  end
end