# File lib/pry/helpers/table.rb, line 32 def initialize items, args = {} @column_count = args[:column_count] self.items = items end
# File lib/pry/helpers/table.rb, line 75 def ==(other); items == other.to_a end
# File lib/pry/helpers/table.rb, line 62 def column_count= n @column_count = n _recolumn end
# File lib/pry/helpers/table.rb, line 71 def columns @rows_without_colors.transpose end
# File lib/pry/helpers/table.rb, line 67 def fits_on_line? line_length _max_width(rows_to_s :no_color) <= line_length end
# File lib/pry/helpers/table.rb, line 55 def items= items @items = items _rebuild_colorless_cache _recolumn items end
# 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
# File lib/pry/helpers/table.rb, line 76 def to_a; items.to_a end
# File lib/pry/helpers/table.rb, line 37 def to_s rows_to_s.join("\n") end
# File lib/pry/helpers/table.rb, line 79 def _max_width(things) things.compact.map(&:size).max || 0 end
# 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
# File lib/pry/helpers/table.rb, line 103 def _recall_color_for thing @colorless_cache[thing] end
# 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