Class: Tabulo::Row

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/tabulo/row.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#sourceObject (readonly)

Returns the element of the Table's underlying enumerable to which this Tabulo::Row corresponds.

Returns:

  • the element of the Table's underlying enumerable to which this Tabulo::Row corresponds



7
8
9
# File 'lib/tabulo/row.rb', line 7

def source
  @source
end

Instance Method Details

#eachObject

Calls the given block once for each cell in the Tabulo::Row, passing that cell as parameter. Each "cell" is just the calculated value for its column (pre-formatting) for this Tabulo::Row's source item.

Examples:

table = Tabulo::Table.new([1, 10], columns: %i(itself even?))
row = table.first
row.each do |cell|
  puts cell        # => 1,       => false
end


26
27
28
29
30
# File 'lib/tabulo/row.rb', line 26

def each
  @table.column_registry.each do |_, column|
    yield column.body_cell_value(@source)
  end
end

#to_hObject

Returns a Hash representation of the Tabulo::Row, with column labels acting as keys and the calculated cell values (before formatting) providing the values.

Examples:

table = Tabulo::Table.new([1, 10], columns: %i[itself even?])
row = table.first
row.to_h  # => { :itself => 1, :even? => false }

Returns:

  • a Hash representation of the Tabulo::Row, with column labels acting as keys and the calculated cell values (before formatting) providing the values.



49
50
51
# File 'lib/tabulo/row.rb', line 49

def to_h
  @table.column_registry.map { |label, column| [label, column.body_cell_value(@source)] }.to_h
end

#to_sObject

Returns a String being an "ASCII" graphical representation of the Tabulo::Row, including any column headers that appear just above it in the Table (depending on where this Row is in the Table and how the Table was configured with respect to header frequency).

Returns:

  • a String being an "ASCII" graphical representation of the Tabulo::Row, including any column headers that appear just above it in the Table (depending on where this Row is in the Table and how the Table was configured with respect to header frequency).



35
36
37
38
39
40
41
# File 'lib/tabulo/row.rb', line 35

def to_s
  if @table.column_registry.any?
    @table.formatted_body_row(@source, with_header: @with_header)
  else
    ""
  end
end