Class: Vkit::Core::TableFormatter
- Inherits:
-
Object
- Object
- Vkit::Core::TableFormatter
- Defined in:
- lib/vkit/core/table_formatter.rb
Class Method Summary collapse
Class Method Details
.border(col_widths) ⇒ Object
Builders
15 16 17 |
# File 'lib/vkit/core/table_formatter.rb', line 15 def self.border(col_widths) "+" + col_widths.map { |w| "-" * (w + 2) }.join("+") + "+" end |
.render(rows) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/vkit/core/table_formatter.rb', line 4 def self.render(rows) return puts "(no rows)" if rows.nil? || rows.empty? headers = rows.first.keys # Calculate column widths col_widths = headers.map do |h| [h.length, *rows.map { |r| r[h].to_s.length }].max end # Builders def self.border(col_widths) "+" + col_widths.map { |w| "-" * (w + 2) }.join("+") + "+" end def self.row(values, col_widths) "|" + values.map.with_index { |v, i| " #{v.to_s.ljust(col_widths[i])} " }.join("|") + "|" end # Print table puts border(col_widths) puts row(headers, col_widths) puts border(col_widths) rows.each do |row| puts row(row.values_at(*headers), col_widths) end puts border(col_widths) end |
.row(values, col_widths) ⇒ Object
19 20 21 |
# File 'lib/vkit/core/table_formatter.rb', line 19 def self.row(values, col_widths) "|" + values.map.with_index { |v, i| " #{v.to_s.ljust(col_widths[i])} " }.join("|") + "|" end |