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, empty_value: '') ⇒ 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, empty_value: '') ⇒ String
Extract the value for this column from a record
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 27 def extract(record, empty_value: '') value = if @transform @transform.call(record) elsif record.is_a?(Hash) if record.key?(@name) record[@name] else record[@name.to_s] end elsif record.respond_to?(@name) record.send(@name) end return empty_value if value.nil? str = value.to_s str.empty? ? empty_value : str end |
#header ⇒ String
Return the header label for this column
49 50 51 |
# File 'lib/philiprehberger/csv_builder/column.rb', line 49 def header @custom_header || @name.to_s end |