class Troo::Decorators::Resource

Attributes

klass[R]
options[R]

Public Class Methods

new(klass, options = {}) click to toggle source

@param [] @param [Hash] @return [Troo::Decorators::Resource]

# File lib/troo/decorators/resource.rb, line 9
def initialize(klass, options = {})
  @klass, @options = klass, options
end

Public Instance Methods

as_view() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 101
def as_view
  Template.parse(self, '/../views/' + type + '.erb')
end
board() click to toggle source

@return [Troo::Decorators::Resource]

# File lib/troo/decorators/resource.rb, line 65
def board
  klass.board.decorator
end
comments() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 75
def comments
  if klass.comments.any? && klass.comments.size > 3
    msg = '(There are more comments, use: ' \
          "'troo show comments #{klass.short_id}' to view " \
          ' all comments.)'
    [decorated_recent_comments, msg].join("\n")
  elsif klass.comments.any?
    decorated_all_comments
  else
    'No comments have been left.'
  end
end
date() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 120
def date
  Time.parse(klass.date).strftime('%a, %b %d at %H:%M')
end
default() click to toggle source

@return [String, NilClass]

# File lib/troo/decorators/resource.rb, line 55
def default
  klass.default? ? '*' : nil
end
description() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 48
def description
  return 'N/A' if klass.description.nil? ||
                  klass.description.empty?
  Troo::Formatter.wordwrap(klass.description)
end
id() click to toggle source

@return [Fixnum]

# File lib/troo/decorators/resource.rb, line 43
def id
  (klass.type == :card) ? klass.short_id : klass.id
end
last_activity_date() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 94
def last_activity_date
  return 'N/A' unless klass.last_activity_date
  Time.parse(klass.last_activity_date)
      .strftime('%a, %b %d at %H:%M')
end
list() click to toggle source

@return [Troo::Decorators::Resource]

# File lib/troo/decorators/resource.rb, line 70
def list
  klass.list.decorator
end
members() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 89
def members
  Presenters::Member.new(klass).show
end
name() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 60
def name
  (klass.name && klass.name.chomp) || 'N/A'
end
resource_id() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 33
def resource_id
  if klass.type == :card
    brackets(Troo::Formatter.highlight(
      Troo::Wordwrap.this(id), options))
  else
    brackets(id)
  end
end
resource_title() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 23
def resource_title
  if klass.type == :card
    Troo::Wordwrap.this(name, prune: true)
  else
    Troo::Formatter.highlight(
      Troo::Wordwrap.this(name, prune: true), options)
  end
end
text() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 115
def text
  Troo::Formatter.wordwrap(klass.text)
end
title() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 14
def title
  [
    resource_id,
    resource_title,
    default
  ].compact.join(' ') + "\n"
end
username() click to toggle source

@return [String]

# File lib/troo/decorators/resource.rb, line 106
def username
  if klass.type == :member
    ['@', klass.username].join
  else
    ['@', klass.member.username].join
  end
end

Private Instance Methods

colour() click to toggle source
# File lib/troo/decorators/resource.rb, line 156
def colour
  {
    board:    Esc.blue,
    card:     Esc.magenta,
    list:     Esc.green,
    comments: Esc.cyan,
    member:   Esc.white
  }
end
decorated_all_comments() click to toggle source
# File lib/troo/decorators/resource.rb, line 138
def decorated_all_comments
  klass.comments.map do |comment|
    comment.decorator.as_view
  end.join
end
decorated_recent_comments() click to toggle source
# File lib/troo/decorators/resource.rb, line 132
def decorated_recent_comments
  klass.recent_comments.map do |comment|
    comment.decorator.as_view
  end.join
end
defaults() click to toggle source
# File lib/troo/decorators/resource.rb, line 148
def defaults
  {
    ansicolor: true,
    colour:    colour.fetch(klass.type, nil),
    underline: true
  }
end
type() click to toggle source
# File lib/troo/decorators/resource.rb, line 128
def type
  klass.type.to_s
end