Sha256: 887084097fd2d10c940525d570e6e0d6c9167ebf5f92d4771bf96570ca3329a7

Contents?: true

Size: 1015 Bytes

Versions: 3

Compression:

Stored size: 1015 Bytes

Contents

require 'tty-table'
require_relative "format"

module Exrt
  module Cli
    LATEST = :latest
    HISTORY = :history

    class Renderer
      attr_reader :table, :type, :data

      def initialize(d:, t:)
        @data = d
        @type = t
        @table = TTY::Table.new header, rows
      end

      def is_latest?
        type == Exrt::Cli::LATEST
      end

      def is_history?
        type == Exrt::Cli::HISTORY
      end

      def header
        if is_latest?
          latest_table_header
        elsif is_history?
          history_table_header
        else
          []
        end
      end

      def rows
        if is_latest?
          Exrt::Cli::Format.latest(data)
        elsif is_history?
          Exrt::Cli::Format.history(data)
        else
          []
        end
      end

      def latest_table_header
        %w[Currency Rate]
      end

      def history_table_header
        %w[Currency Rate Date]
      end

      def render
        table.render(:ascii)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
exrt-cli-0.2.2 lib/exrt/cli/renderer.rb
exrt-cli-0.2.1 lib/exrt/cli/renderer.rb
exrt-cli-0.2.0 lib/exrt/cli/renderer.rb