Class: Pry::Helpers::Table

Inherits:
Object show all
Defined in:
lib/pry/helpers/table.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(items, args = {}) ⇒ Table

Returns a new instance of Table



32
33
34
35
# File 'lib/pry/helpers/table.rb', line 32

def initialize items, args = {}
  @column_count = args[:column_count]
  self.items = items
end

Instance Attribute Details

#column_countObject

Returns the value of attribute column_count



31
32
33
# File 'lib/pry/helpers/table.rb', line 31

def column_count
  @column_count
end

#itemsObject

Returns the value of attribute items



31
32
33
# File 'lib/pry/helpers/table.rb', line 31

def items
  @items
end

Instance Method Details

#==(other) ⇒ Object



75
# File 'lib/pry/helpers/table.rb', line 75

def ==(other); items == other.to_a end

#_max_width(things) ⇒ Object (private)



79
80
81
# File 'lib/pry/helpers/table.rb', line 79

def _max_width(things)
  things.compact.map(&:size).max || 0
end

#_rebuild_colorless_cacheObject (private)



83
84
85
86
87
88
89
90
91
# 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) ⇒ Object (private)



103
104
105
# File 'lib/pry/helpers/table.rb', line 103

def _recall_color_for thing
  @colorless_cache[thing]
end

#_recolumnObject (private)



93
94
95
96
97
98
99
100
101
# 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

#columnsObject



71
72
73
# File 'lib/pry/helpers/table.rb', line 71

def columns
  @rows_without_colors.transpose
end

#fits_on_line?(line_length) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/pry/helpers/table.rb', line 67

def fits_on_line? line_length
  _max_width(rows_to_s :no_color) <= line_length
end

#rows_to_s(style = :color_on) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# 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_aObject



76
# File 'lib/pry/helpers/table.rb', line 76

def to_a; items.to_a end

#to_sObject



37
38
39
# File 'lib/pry/helpers/table.rb', line 37

def to_s
  rows_to_s.join("\n")
end