Class: TableStructure::Table
- Inherits:
-
Object
- Object
- TableStructure::Table
- Defined in:
- lib/table_structure/table.rb
Constant Summary collapse
- DEFAULT_ROW_BUILDERS =
{ _to_hash_: Utils::TypedProc.new( types: :hash ) do |values, keys| keys.map.with_index { |key, i| [key || i, values[i]] }.to_h end }.freeze
Instance Method Summary collapse
- #body(contexts) ⇒ Object
- #header(context: nil) ⇒ Object
-
#initialize(schema, row_type: :array) {|_self| ... } ⇒ Table
constructor
A new instance of Table.
Constructor Details
#initialize(schema, row_type: :array) {|_self| ... } ⇒ Table
Returns a new instance of Table.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/table_structure/table.rb', line 13 def initialize(schema, row_type: :array) @header_row_generator = schema.create_header_row_generator @data_row_generator = schema.create_data_row_generator row_builders = DEFAULT_ROW_BUILDERS .merge(schema.row_builders) .select { |_k, v| v.typed?(row_type) } .values unless row_builders.empty? row_build_task = proc do |row| row.values = row_builders.reduce(row.values) do |values, builder| builder.call(values, row.keys, row.context, schema.context) end row end @header_row_generator.compose(row_build_task) @data_row_generator.compose(row_build_task) end yield self if block_given? end |
Instance Method Details
#body(contexts) ⇒ Object
41 42 43 44 45 |
# File 'lib/table_structure/table.rb', line 41 def body(contexts) ::Enumerator.new do |y| contexts.each { |context| y << @data_row_generator.call(context).values } end end |
#header(context: nil) ⇒ Object
37 38 39 |
# File 'lib/table_structure/table.rb', line 37 def header(context: nil) @header_row_generator.call(context).values end |