Module: Sequel::PrettyTable
- Defined in:
- lib/sequel_core/pretty_table.rb
Class Method Summary collapse
-
.column_sizes(records, columns) ⇒ Object
Hash of the maximum size of the value for each column.
-
.data_line(columns, sizes, record) ⇒ Object
String for each data line.
-
.format_cell(size, v) ⇒ Object
Format the value so it takes up exactly size characters.
-
.header_line(columns, sizes) ⇒ Object
String for header line.
-
.print(records, columns = nil) ⇒ Object
Prints nice-looking plain-text tables via puts.
-
.separator_line(columns, sizes) ⇒ Object
String for separtor line.
Class Method Details
.column_sizes(records, columns) ⇒ Object
Hash of the maximum size of the value for each column
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/sequel_core/pretty_table.rb', line 26 def self.column_sizes(records, columns) # :nodoc: sizes = Hash.new {0} columns.each do |c| s = c.to_s.size sizes[c.to_sym] = s if s > sizes[c.to_sym] end records.each do |r| columns.each do |c| s = r[c].to_s.size sizes[c.to_sym] = s if s > sizes[c.to_sym] end end sizes end |
.data_line(columns, sizes, record) ⇒ Object
String for each data line
42 43 44 |
# File 'lib/sequel_core/pretty_table.rb', line 42 def self.data_line(columns, sizes, record) # :nodoc: '|' << columns.map {|c| format_cell(sizes[c], record[c])}.join('|') << '|' end |
.format_cell(size, v) ⇒ Object
Format the value so it takes up exactly size characters
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/sequel_core/pretty_table.rb', line 47 def self.format_cell(size, v) # :nodoc: case v when Bignum, Fixnum "%#{size}d" % v when Float "%#{size}g" % v else "%-#{size}s" % v.to_s end end |
.header_line(columns, sizes) ⇒ Object
String for header line
59 60 61 |
# File 'lib/sequel_core/pretty_table.rb', line 59 def self.header_line(columns, sizes) # :nodoc: '|' << columns.map {|c| "%-#{sizes[c]}s" % c.to_s}.join('|') << '|' end |
.print(records, columns = nil) ⇒ Object
Prints nice-looking plain-text tables via puts
+--+-------+
|id|name |
|--+-------|
|1 |fasdfas|
|2 |test |
+--+-------+
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/sequel_core/pretty_table.rb', line 11 def self.print(records, columns = nil) # records is an array of hashes columns ||= records.first.keys.sort_by{|x|x.to_s} sizes = column_sizes(records, columns) sep_line = separator_line(columns, sizes) puts sep_line puts header_line(columns, sizes) puts sep_line records.each {|r| puts data_line(columns, sizes, r)} puts sep_line end |
.separator_line(columns, sizes) ⇒ Object
String for separtor line
64 65 66 |
# File 'lib/sequel_core/pretty_table.rb', line 64 def self.separator_line(columns, sizes) # :nodoc: '+' << columns.map {|c| '-' * sizes[c]}.join('+') << '+' end |