class UtilsDrawer::TableDrawer::Table
Public Class Methods
new(min_column_size)
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 8 def initialize(min_column_size) @rows = [] @header_column_sizes = [] @min_column_size = min_column_size end
Public Instance Methods
add(row)
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 14 def add(row) # Means the header if @rows.size.zero? set_header_column_size(row) else if row.columns.size != @header_column_sizes.size fail "Bud number of columns (#{row.columns.size} for #{@header_column_sizes.size})" end end @rows << row end
to_s()
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 28 def to_s puts separate @rows.each.with_index do |row, index| puts format_line(row) puts separate if index != @rows.size - 1 end puts separate end
Private Instance Methods
format_line(row)
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 54 def format_line(row) line = '| ' row.columns.each.with_index do |column, index| # Ignore ANSI escape sequences pure_text = column.text.to_pure if pure_text.size < @header_column_sizes[index] line << column.text + ' ' * (@header_column_sizes[index] - pure_text.size) elsif pure_text.size > @header_column_sizes[index] line << column.text[0, @header_column_sizes[index] - 3] + '...' else line << column.text end line << ' | ' if index != row.columns.size - 1 end line << ' |' end
separate()
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 77 def separate left = middle = right = '+' bar = '-' left + @header_column_sizes.map { |size| bar * (size + 2) }.join(middle) + right end
set_header_column_size(row)
click to toggle source
# File lib/utils_drawer/table_drawer/table.rb, line 41 def set_header_column_size(row) row.columns.each.with_index do |column, index| # Ignore ANSI escape sequences pure_text = column.text.to_pure if pure_text.size > @min_column_size @header_column_sizes[index] = pure_text.size else @header_column_sizes[index] = @min_column_size end end end