class Temjin::CardCommand::ShowCommand

Public Instance Methods

execute() click to toggle source
# File lib/temjin/card_command/show_command.rb, line 6
def execute
  card = find_card(card_id)
  list = find_list_by_id(card.list_id)
  board = find_board(card.board_id)
  members = card.member_ids.map { |member| find_user(member).username }
  labels = card.labels.map { |label| label.name }

  Formatador.display_line("# [bold]#{card.name}[/]")
  Formatador.indent do
    Formatador.display_line("-> #{list.name} --> #{board.name}")
  end
  Formatador.display_line("[[yellow]#{card.id}[/]] #{card.short_url} #{card.attachments.empty? ? '' : '+attachments '}- #{card.closed? ? '[_red_]closed[/]' : '[green]open[/]'}")
  Formatador.display_line(members.map { |m| "[cyan]@#{m}[/]" }.join(', ')) unless members.empty?
  Formatador.display_line("{ #{labels.map { |l| "[purple]#{l}[/]" }.join(', ')} }") unless labels.empty?
  Formatador.display_line("due on [red]#{card.due.getlocal.ctime}[/]") unless card.due.nil?
  unless card.checklists.empty?
    Formatador.display_line("---")
    card.checklists.each do |checklist|
      Formatador.display_line(checklist.name)
      Formatador.indent do
        checklist.check_items.each do |checklist_item|
          checkbox = if checklist_item['state'].match?(/^complete$/)
                       "\u2713".force_encoding('utf-8')
                     else
                       ' '
                     end
          Formatador.display_line("[#{checkbox}] #{checklist_item['name']}")
        end
      end
    end
  end
  unless card.desc.empty?
    Formatador.display_line("---")
    Formatador.display_line(card.desc) # FIXME: what happens if the desc is multiple lines?
  end
end