class FlexibleTable
This is the main class for creating Tables. The user can create a series of columns, and the print those columns out. See the README for more example usages.
Examples¶ ↑
table = FlexibleTable.new table.add_column("I'm the first column", 10) table.add_column("I'm the second column", 10) table.print_header table.print_row("I'll be in column 1", "I'll be in column 2") table.print_row("I'll be in column 1", "I'll be in column 2") table.print_row("I'll be in column 1", "I'll be in column 2")
Public Class Methods
new()
click to toggle source
# File lib/flexible_table.rb, line 22 def initialize @total_screen_columns = IO.console.winsize[1] @columns = [] end
Public Instance Methods
add_column(title, width_percentage, **args)
click to toggle source
# File lib/flexible_table.rb, line 27 def add_column(title, width_percentage, **args) @columns << FlexibleColumn.new(title, width_percentage, args) end
print_header(io: $stdout)
click to toggle source
# File lib/flexible_table.rb, line 31 def print_header(io: $stdout) exit unless columns_fit_screen?(@columns) @columns.each_with_index do |col, index| abs_width = get_abs_column_width(@total_screen_columns, col.width_percentage) color_prefix = col.header.instance_eval { @tu_color_prefix } || '' color_suffix = col.header.instance_eval { @tu_color_suffix } || '' output = get_printable_output(col.header, abs_width) if(@columns[index].justify_header == :left) io.printf("%s%-#{abs_width}s%s", color_prefix, output, color_suffix) elsif(@columns[index].justify_header == :right) io.printf("%s%#{abs_width}s%s", color_prefix, output, color_suffix) else io.printf("%s%-#{abs_width}s%s", color_prefix, output, color_suffix) # default to left justify end print_column_separator(io: io) unless index == (@columns.length - 1) end io.puts "\n" print_header_line(@total_screen_columns, io: io) end
print_row(*args, io: $stdout)
click to toggle source
# File lib/flexible_table.rb, line 54 def print_row(*args, io: $stdout) exit unless columns_fit_screen?(@columns) args.each_with_index do |element, index| abs_width = get_abs_column_width(@total_screen_columns, @columns[index].width_percentage) color_prefix = element.instance_eval { @tu_color_prefix } || '' color_suffix = element.instance_eval { @tu_color_suffix } || '' output = get_printable_output(element, abs_width) if(@columns[index].justify_row == :left) io.printf("%s%-#{abs_width}s%s", color_prefix, output, color_suffix) elsif(@columns[index].justify_row == :right) io.printf("%s%#{abs_width}s%s", color_prefix, output, color_suffix) else io.printf("%s%-#{abs_width}s%s", color_prefix, output, color_suffix) # default to left justify end print_column_separator(io: io) unless index == (@columns.length - 1) end io.puts "\n" end