class Nin::Presenter::ItemPresenter

Public Instance Methods

call(options = {}) click to toggle source
# File lib/nin/presenters/item_presenter.rb, line 4
def call(options = {})
  _id, _completed, _date, _desc, _tags = id, decorate_completed, decorate_date, decorate_desc, decorate_tags

  separating_spaces = options.fetch(:separating_spaces, 2)
  id_spaces         = options.fetch(:longest_id, 1) + separating_spaces
  completed_spaces  = _completed.length + separating_spaces
  date_spaces       = _date.length + (options.fetch(:longest_date, 11) - _date.remove_color.length) + separating_spaces

  sprintf("%-#{id_spaces}d %-#{completed_spaces}s %-#{date_spaces}s %s %s",
          _id, _completed, _date, _desc, _tags)
end

Private Instance Methods

decorate_completed() click to toggle source
# File lib/nin/presenters/item_presenter.rb, line 28
def decorate_completed
  if self.completed?
    '[x]'.green
  else
    '[ ]'
  end
end
decorate_date() click to toggle source
# File lib/nin/presenters/item_presenter.rb, line 36
def decorate_date
  date_in_words = '@' << self.date.humanize

  if self.past?
    date_in_words.magenta
  elsif self.today?
    date_in_words.bold.cyan
  else
    date_in_words.cyan
  end
end
decorate_desc() click to toggle source
# File lib/nin/presenters/item_presenter.rb, line 18
def decorate_desc
  if self.archived?
    self.desc.yellow
  elsif self.completed?
    self.desc.white
  else
    self.desc
  end
end
decorate_tags() click to toggle source
# File lib/nin/presenters/item_presenter.rb, line 48
def decorate_tags
  self.tags.map { |tag| tag.dup.prepend('#') }.join(' ').blue
end