class Terminal::Table::Cell
Attributes
Column span.
Public Class Methods
Source
# File lib/terminal-table/cell.rb, line 19 def initialize options = nil @value, options = options, {} unless Hash === options @value = options.fetch :value, value @alignment = options.fetch :alignment, nil @colspan = options.fetch :colspan, 1 @width = options.fetch :width, @value.to_s.size @index = options.fetch :index @table = options.fetch :table end
Initialize with options.
Public Instance Methods
Source
# File lib/terminal-table/cell.rb, line 46 def align(val, position, length) positions = { :left => :ljust, :right => :rjust, :center => :center } val.public_send(positions[position], length) end
Source
# File lib/terminal-table/cell.rb, line 33 def alignment @alignment || @table.style.alignment || :left end
Source
# File lib/terminal-table/cell.rb, line 37 def alignment=(val) supported = %w(left center right) if supported.include?(val.to_s) @alignment = val else raise "Aligment must be one of: #{supported.join(' ')}" end end
Source
# File lib/terminal-table/cell.rb, line 85 def inspect fields = %i[alignment colspan index value width].map do |name| val = self.instance_variable_get('@'+name.to_s) "@#{name}=#{val.inspect}" end.join(', ') return "#<#{self.class} #{fields}>" end
Source
# File lib/terminal-table/cell.rb, line 57 def render(line = 0) left = " " * @table.style.padding_left right = " " * @table.style.padding_right display_width = Unicode::DisplayWidth.of(Util::ansi_escape(lines[line])) render_width = lines[line].to_s.size - display_width + width align("#{left}#{lines[line]}#{right}", alignment, render_width + @table.cell_padding) end
Render the cell.
Also aliased as: to_s
Source
# File lib/terminal-table/cell.rb, line 70 def value_for_column_width_recalc lines.map{ |s| Util::ansi_escape(s) }.max_by{ |s| Unicode::DisplayWidth.of(s) } end
Returns the longest line in the cell and removes all ANSI escape sequences (e.g. color)
Source
# File lib/terminal-table/cell.rb, line 77 def width padding = (colspan - 1) * @table.cell_spacing inner_width = (1..@colspan).to_a.inject(0) do |w, counter| w + @table.column_width(@index + counter - 1) end inner_width + padding end
Returns the width of this cell