class Pry::Helpers::Table

Attributes

column_count[R]
items[R]

Public Class Methods

new(items, args = {}) click to toggle source
# File lib/pry/helpers/table.rb, line 32
def initialize items, args = {}
  @column_count = args[:column_count]
  self.items = items
end

Public Instance Methods

==(other) click to toggle source
# File lib/pry/helpers/table.rb, line 75
def ==(other); items == other.to_a end
column_count=(n) click to toggle source
# File lib/pry/helpers/table.rb, line 62
def column_count= n
  @column_count = n
  _recolumn
end
columns() click to toggle source
# File lib/pry/helpers/table.rb, line 71
def columns
  @rows_without_colors.transpose
end
fits_on_line?(line_length) click to toggle source
# File lib/pry/helpers/table.rb, line 67
def fits_on_line? line_length
  _max_width(rows_to_s :no_color) <= line_length
end
items=(items) click to toggle source
# File lib/pry/helpers/table.rb, line 55
def items= items
  @items = items
  _rebuild_colorless_cache
  _recolumn
  items
end
rows_to_s(style = :color_on) click to toggle source
# File lib/pry/helpers/table.rb, line 41
def rows_to_s style = :color_on
  widths = columns.map{|e| _max_width(e)}
  @rows_without_colors.map do |r|
    padded = []
    r.each_with_index do |e,i|
      next unless e
      item = e.ljust(widths[i])
      item.sub! e, _recall_color_for(e) if :color_on == style
      padded << item
    end
    padded.join(Pry.config.ls.separator)
  end
end
to_a() click to toggle source
# File lib/pry/helpers/table.rb, line 76
def to_a; items.to_a end
to_s() click to toggle source
# File lib/pry/helpers/table.rb, line 37
def to_s
  rows_to_s.join("\n")
end

Private Instance Methods

_max_width(things) click to toggle source
# File lib/pry/helpers/table.rb, line 79
def _max_width(things)
  things.compact.map(&:size).max || 0
end
_rebuild_colorless_cache() click to toggle source
# File lib/pry/helpers/table.rb, line 83
def _rebuild_colorless_cache
  @colorless_cache = {}
  @plain_items = []
  items.map do |e|
    plain = Pry::Helpers::Text.strip_color(e)
    @colorless_cache[plain] = e
    @plain_items << plain
  end
end
_recall_color_for(thing) click to toggle source
# File lib/pry/helpers/table.rb, line 103
def _recall_color_for thing
  @colorless_cache[thing]
end
_recolumn() click to toggle source
# File lib/pry/helpers/table.rb, line 93
def _recolumn
  @rows_without_colors = []
  return if items.size.zero?
  row_count = (items.size.to_f/column_count).ceil
  row_count.times do |i|
    row_indices = (0...column_count).map{|e| row_count*e+i}
    @rows_without_colors << row_indices.map{|e| @plain_items[e]}
  end
end