Sha256: a754e4c5fd7cd5d47a3746da3cc9f6e8d6053e642c7c093a5433d4b8a9539e45

Contents?: true

Size: 853 Bytes

Versions: 1

Compression:

Stored size: 853 Bytes

Contents

# frozen_string_literal: true

module FtcEvent
  class Alliance
    attr_reader :event
    attr_reader :rank

    def initialize(event, rank)
      @event = event
      @rank = rank
    end

    def info
      event.db.query('SELECT * FROM alliances WHERE rank = ?', [rank])&.first
    end

    def teams
      [1, 2, 3].map { |n| info["team#{n}"] }.reject(&:zero?)
    end

    def each_team
      return enum_for(:each_team) unless block_given?

      teams.each do |team_number|
        yield event.team(team_number)
      end

      nil
    end

    def short_team_list
      each_team.map(&:number).join('/')
    end

    def long_team_list
      each_team.map(&:description).join(' and ')
    end

    def short_description
      "##{rank} #{short_team_list}"
    end

    def long_description
      "##{rank} #{long_team_list}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ftc_event-0.1.1 lib/ftc_event/alliance.rb