Class: Monosheet::OutputTable
- Inherits:
-
Object
- Object
- Monosheet::OutputTable
- Defined in:
- lib/monosheet/output_table.rb
Instance Method Summary collapse
- #column(name) ⇒ Object
-
#initialize(data_source) ⇒ OutputTable
constructor
A new instance of OutputTable.
- #render ⇒ Object
Constructor Details
#initialize(data_source) ⇒ OutputTable
Returns a new instance of OutputTable.
6 7 8 9 10 |
# File 'lib/monosheet/output_table.rb', line 6 def initialize(data_source) @data_source = data_source @columns = [] @row_divider_class = Class.new(Monosheet::OutputTableRowDivider) end |
Instance Method Details
#column(name) ⇒ Object
12 13 14 15 |
# File 'lib/monosheet/output_table.rb', line 12 def column(name) return unless @data_source.respond_to?(:size) && @data_source.size > 0 @columns << name.to_sym end |
#render ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/monosheet/output_table.rb', line 17 def render output_items = [@row_divider_class.new("=")] output_items << Monosheet::OutputTableHeaderRow.new(initialize_column_sizes_and_get_column_titles) output_items << @row_divider_class.new("=") @data_source.each do |data_item| @columns.each_with_index do |column_key, index| if data_item.send(column_key.to_sym).to_s.size > @row_divider_class.column_size[index] @row_divider_class.column_size[index] = data_item.send(column_key.to_sym).to_s.size end end data_item.extend Monosheet::ObjectRenderer data_item.set_columns_to_render @columns output_items << data_item output_items << @row_divider_class.new end output_items.map { |item| item.render @row_divider_class.column_size }.join("\n") end |