Class: Philiprehberger::CsvBuilder::Column
- Inherits:
-
Object
- Object
- Philiprehberger::CsvBuilder::Column
- Defined in:
- lib/philiprehberger/csv_builder/column.rb
Overview
Represents a single column definition in a CSV builder
Instance Attribute Summary collapse
-
#name ⇒ Symbol
readonly
The column name.
-
#transform ⇒ Proc?
readonly
Optional transform block.
Instance Method Summary collapse
-
#extract(record) ⇒ String
Extract the value for this column from a record.
-
#header ⇒ String
Return the header label for this column.
-
#initialize(name, header: nil, &transform) ⇒ Column
constructor
A new instance of Column.
Constructor Details
#initialize(name, header: nil, &transform) ⇒ Column
Returns a new instance of Column.
16 17 18 19 20 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 16 def initialize(name, header: nil, &transform) @name = name.to_sym @custom_header = header @transform = block_given? ? transform : nil end |
Instance Attribute Details
#name ⇒ Symbol (readonly)
Returns the column name.
8 9 10 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 8 def name @name end |
#transform ⇒ Proc? (readonly)
Returns optional transform block.
11 12 13 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 11 def transform @transform end |
Instance Method Details
#extract(record) ⇒ String
Extract the value for this column from a record
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 26 def extract(record) value = if @transform @transform.call(record) elsif record.is_a?(Hash) record[@name] || record[@name.to_s] elsif record.respond_to?(@name) record.send(@name) end value.to_s end |
#header ⇒ String
Return the header label for this column
41 42 43 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 41 def header @custom_header || @name.to_s end |