Class: Mcoin::Printer
- Inherits:
-
Object
- Object
- Mcoin::Printer
- Defined in:
- lib/mcoin/printer.rb
Overview
:nodoc:
Instance Method Summary collapse
- #build ⇒ Object
- #build_header ⇒ Object
- #build_rows ⇒ Object
- #column_widths ⇒ Object
- #columns ⇒ Object
-
#initialize(*rows) ⇒ Printer
constructor
A new instance of Printer.
- #print ⇒ Object
- #row(row) ⇒ Object
Constructor Details
#initialize(*rows) ⇒ Printer
Returns a new instance of Printer.
6 7 8 9 10 11 |
# File 'lib/mcoin/printer.rb', line 6 def initialize(*rows) @rows = rows.flatten @outputs = [] build end |
Instance Method Details
#build ⇒ Object
21 22 23 24 25 |
# File 'lib/mcoin/printer.rb', line 21 def build return if @rows.empty? build_header build_rows end |
#build_header ⇒ Object
27 28 29 30 |
# File 'lib/mcoin/printer.rb', line 27 def build_header @outputs << row(columns.map(&:capitalize)) @outputs << column_widths.map { |width| '-' * width }.join(' | ') end |
#build_rows ⇒ Object
32 33 34 35 36 |
# File 'lib/mcoin/printer.rb', line 32 def build_rows @rows.each do |row| @outputs << row(columns.map { |column| row.send(column) }) end end |
#column_widths ⇒ Object
45 46 47 48 49 |
# File 'lib/mcoin/printer.rb', line 45 def column_widths @widths ||= columns.map do |column| [@rows.map(&column).map(&:size).max, column.size].max end end |
#columns ⇒ Object
51 52 53 54 |
# File 'lib/mcoin/printer.rb', line 51 def columns # TODO: Load from command %i[market currency type last ask bid time] end |
#print ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/mcoin/printer.rb', line 13 def print if @rows.empty? puts 'No result found' else puts @outputs end end |
#row(row) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/mcoin/printer.rb', line 38 def row(row) row.map(&:to_s) .zip(column_widths) .map { |item| item.reduce(:ljust) } .join(' | ') end |