class TheFox::Timr::Table
Attributes
rows[R]
Holds all rows.
Public Class Methods
new(options = Hash.new)
click to toggle source
# File lib/timr/table.rb, line 10 def initialize(options = Hash.new) @headings = options.fetch(:headings, Array.new) @rows = Array.new end
Public Instance Methods
<<(row)
click to toggle source
Append a row.
# File lib/timr/table.rb, line 17 def <<(row) col_n = 0 row.each do |col| header = @headings[col_n] if header header[:format] ||= '%s' header[:label] ||= '' unless header.has_key?(:empty) header[:empty] = true end header[:max_length] ||= 0 header[:padding_left] ||= '' header[:padding_right] ||= '' else header = { :format => '%s', :label => '', :empty => true, :max_length => 0, :padding_left => '', :padding_right => '', } end unless col.nil? if header[:empty] header[:empty] = false end col_s = col.to_s if col_s.length > header[:max_length] header[:max_length] = (header[:format] % [col_s]).length + header[:padding_left].length + header[:padding_right].length end end col_n += 1 end @rows << row end
to_s()
click to toggle source
Render Table
to String.
# File lib/timr/table.rb, line 57 def to_s s = '' s << @headings.map{ |header| unless header[:empty] "%s#{header[:format]}%s" % [header[:padding_left], header[:label], header[:padding_right]] end }.select{ |ts| !ts.nil? }.join(' ') s << "\n" @rows.each do |row| col_n = 0 columns = [] row.each do |col| header = @headings[col_n] unless header[:empty] col_s = "%s#{header[:format]}%s" % [header[:padding_left], col, header[:padding_right]] columns << col_s end col_n += 1 end s << columns.join(' ') << "\n" end s end