Class: Mayak::Csv::Header
- Inherits:
-
T::Struct
- Object
- T::Struct
- Mayak::Csv::Header
- Extended by:
- T::Generic, T::Sig
- Defined in:
- lib/mayak/csv/header.rb
Constant Summary collapse
- Value =
type_member
Instance Method Summary collapse
- #build_body(values) ⇒ Object
- #build_document(values) ⇒ Object
- #serialize_to_csv(separator: ",") ⇒ Object
- #to_encoder(separator: ",") ⇒ Object
- #with_column(name, &serializer) ⇒ Object
Instance Method Details
#build_body(values) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/mayak/csv/header.rb', line 29 def build_body(values) rows = values.map do |value| Row.new(cells: columns.map { |column| [column, column.serializer.call(value)] }) end Body.new(rows: rows) end |
#build_document(values) ⇒ Object
37 38 39 |
# File 'lib/mayak/csv/header.rb', line 37 def build_document(values) Document[Value].new(header: self, body: build_body(values)) end |
#serialize_to_csv(separator: ",") ⇒ Object
42 43 44 |
# File 'lib/mayak/csv/header.rb', line 42 def serialize_to_csv(separator: ",") columns.map(&:name).join(separator) end |
#to_encoder(separator: ",") ⇒ Object
47 48 49 50 51 |
# File 'lib/mayak/csv/header.rb', line 47 def to_encoder(separator: ",") ::Mayak::Csv::Encoder::FromFunction[Value].new( fn: -> (values) { build_document(values).serialize_to_csv(separator: separator) } ) end |
#with_column(name, &serializer) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/mayak/csv/header.rb', line 20 def with_column(name, &serializer) new_column = ::Mayak::Csv::Column[Value].new( name: name, serializer: -> (value) { serializer.call(value) } ) Header[Value].new(columns: columns.concat([new_column])) end |