class Nazar::View

Attributes

data[R]
use_generic_formatter[R]

Public Class Methods

new(data, use_generic_formatter: false) click to toggle source
# File lib/nazar/view.rb, line 9
def initialize(data, use_generic_formatter: false)
  @data = data
  @use_generic_formatter = use_generic_formatter
end

Public Instance Methods

render() click to toggle source
# File lib/nazar/view.rb, line 14
def render
  return unless supported_data?

  table.tap do
    add_summary if summary
  end
end
supported_data?() click to toggle source
# File lib/nazar/view.rb, line 22
def supported_data?
  !!formatter_klass && formatter.valid?
end

Private Instance Methods

add_summary() click to toggle source
# File lib/nazar/view.rb, line 44
def add_summary
  table.add_separator
  table.add_row [pastel.bold('Total'), { value: summary, colspan: headers.size - 1 }]
end
formatter() click to toggle source
# File lib/nazar/view.rb, line 40
def formatter
  @formatter ||= formatter_klass.new(data)
end
formatter_klass() click to toggle source
# File lib/nazar/view.rb, line 36
def formatter_klass
  @formatter_klass ||= formatters.find { |klass| klass.valid?(data) }
end
formatters() click to toggle source
# File lib/nazar/view.rb, line 30
def formatters
  @formatters ||= Nazar.formatters.tap do |formatters|
    formatters << Nazar::Formatter::Generic if use_generic_formatter
  end
end
pastel() click to toggle source
# File lib/nazar/view.rb, line 57
def pastel
  @pastel ||= Pastel.new(enabled: Nazar.config.colors.enabled)
end
table() click to toggle source
# File lib/nazar/view.rb, line 49
def table
  @table ||= Terminal::Table.new(
    headings: headers,
    rows: cells,
    style: { border: :unicode_thick_edge }
  )
end