Sha256: 58634c7f2ac998bd8a96b7b4a352116ba3f63c1a5b4b664deb9b41332f6ef870

Contents?: true

Size: 1016 Bytes

Versions: 4

Compression:

Stored size: 1016 Bytes

Contents

module Tr3llo
  module Presenter
    module List
      class CardsPresenter
        def initialize(interface)
          @interface = interface
        end

        def print!(cards)
          interface.print_frame do
            cards.each { |card| present_card(card) }
          end
        end

        private

        attr_reader :interface

        def present_card(card)
          if card.has_key?(:labels)
            label_str = card[:labels].map { |label| colorize_label(label) }.join(", ")
          else
            label_str = ''
          end

          if card[:subscribed]
            subscribed_str = "[✓]"
          else
            subscribed_str = "[ ]"
          end

          interface.puts "#{subscribed_str} #{card[:id].labelize}] - #{card[:name]} (#{label_str})"
        end

        def colorize_label(label)
          if label[:color]
            "##{label[:name]}".paint(label[:color])
          else
            "##{label[:name]}"
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
3llo-0.3.1 lib/3llo/presenter/list/cards.rb
3llo-0.3.0 lib/3llo/presenter/list/cards.rb
3llo-0.2.0 lib/3llo/presenter/list/cards.rb
3llo-0.1.12 lib/3llo/presenter/list/cards.rb