Sha256: e6d83fc1b11a9d54b5d1d7cd5f75dca923eeb688d6189e1e4d7aab318247b4ac

Contents?: true

Size: 1022 Bytes

Versions: 3

Compression:

Stored size: 1022 Bytes

Contents

module Troo
  class MemberPresenter
    class << self
      def show(card, options = {})
        new(card, options).show
      end
    end

    include DecoratorHelpers

    def initialize(card, options = {})
      @card    = card
      @options = options
    end

    def show
      decorated_members
    end

    private
    attr_reader :card

    def decorated_members
      if one_member?
        members.first
      elsif two_members?
        members.join(" and ")
      elsif many_members?
        word_wrap([all_but_last_member, last_member].join(" and "))
      else
        "No members have been assigned."
      end
    end

    def members
      @members ||= card.members.map { |member| member.decorator.username }
    end

    def one_member?
      members.size == 1
    end

    def two_members?
      members.size == 2
    end

    def many_members?
      members.size > 2
    end

    def all_but_last_member
      members[0...-1].join(", ")
    end

    def last_member
      members[-1]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
troo-0.0.7 lib/troo/display/member_presenter.rb
troo-0.0.6 lib/troo/display/member_presenter.rb
troo-0.0.5 lib/troo/display/member_presenter.rb