Module: Datagrid::Columns::InstanceMethods
- Defined in:
- lib/datagrid/columns.rb
Overview
ClassMethods
Instance Method Summary collapse
- #column_by_name(name) ⇒ Object
- #columns ⇒ Object
- #data ⇒ Object
- #data_hash ⇒ Object
-
#hash_for(asset) ⇒ Object
Returns
Hash
where keys are column names and values are column values for the given asset. -
#header ⇒ Object
Returns
Array
of human readable column names. -
#row_for(asset) ⇒ Object
Returns
Array
column values for given asset. - #rows ⇒ Object
- #to_csv(options = {}) ⇒ Object
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 |
#columns ⇒ Object
97 98 99 |
# File 'lib/datagrid/columns.rb', line 97 def columns self.class.columns end |
#data ⇒ Object
70 71 72 |
# File 'lib/datagrid/columns.rb', line 70 def data self.rows.unshift(self.header) end |
#data_hash ⇒ Object
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 |
#header ⇒ Object
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 |
#rows ⇒ Object
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( = {}) klass = if RUBY_VERSION >= "1.9" require 'csv' CSV else require "fastercsv" FasterCSV end klass.generate( {:headers => self.header, :write_headers => true}.merge() ) do |csv| self.rows.each do |row| csv << row end end end |