Method: Rex::Ui::Text::Table#initialize

Defined in:
lib/rex/ui/text/table.rb

#initialize(opts = {}) ⇒ Table

Initializes a text table instance using the supplied properties. The Table class supports the following hash attributes:

Header

The string to display as a heading above the table. If none is specified, no header will be displayed.

HeaderIndent

The amount of space to indent the header. The default is zero.

Columns

The array of columns that will exist within the table.

Rows

The array of rows that will exist.

Width

The maximum width of the table in characters.

Indent

The number of characters to indent the table.

CellPad

The number of characters to put between each horizontal cell.

Prefix

The text to prefix before the table.

Postfix

The text to affix to the end of the table.

Sortindex

The column to sort the table on, -1 disables sorting.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/rex/ui/text/table.rb', line 62

def initialize(opts = {})
  self.header   = opts['Header']
  self.headeri  = opts['HeaderIndent'] || 0
  self.columns  = opts['Columns'] || []
  # updated below if we got a "Rows" option
  self.rows     = []

  self.width    = opts['Width']   || 80
  self.indent   = opts['Indent']  || 0
  self.cellpad  = opts['CellPad'] || 2
  self.prefix   = opts['Prefix']  || ''
  self.postfix  = opts['Postfix'] || ''
  self.colprops = []

  self.sort_index  = opts['SortIndex'] || 0

  # Default column properties
  self.columns.length.times { |idx|
    self.colprops[idx] = {}
    self.colprops[idx]['MaxWidth'] = self.columns[idx].length
  }

  # ensure all our internal state gets updated with the given rows by
  # using add_row instead of just adding them to self.rows.  See #3825.
  opts['Rows'].each { |row| add_row(row) } if opts['Rows']

  # Merge in options
  if (opts['ColProps'])
    opts['ColProps'].each_key { |col|
      idx = self.columns.index(col)

      if (idx)
        self.colprops[idx].merge!(opts['ColProps'][col])
      end
    }
  end

end