Class: SportsManager::ConstraintBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/sports_manager/constraint_builder.rb

Constant Summary collapse

DEFAULT_CONSTRAINTS =
[
  Constraints::AllDifferentConstraint,
  Constraints::NoOverlappingConstraint,
  Constraints::MatchConstraint,
  Constraints::MultiCategoryConstraint,
  Constraints::NextRoundConstraint
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tournament:, constraints: nil) ⇒ ConstraintBuilder



19
20
21
22
# File 'lib/sports_manager/constraint_builder.rb', line 19

def initialize(tournament:, constraints: nil)
  @tournament = tournament
  @constraints = constraints || DEFAULT_CONSTRAINTS
end

Instance Attribute Details

#constraintsObject (readonly)

Returns the value of attribute constraints.



5
6
7
# File 'lib/sports_manager/constraint_builder.rb', line 5

def constraints
  @constraints
end

#tournamentObject (readonly)

Returns the value of attribute tournament.



5
6
7
# File 'lib/sports_manager/constraint_builder.rb', line 5

def tournament
  @tournament
end

Class Method Details

.build(tournament:, csp:, constraints: nil) ⇒ Object



15
16
17
# File 'lib/sports_manager/constraint_builder.rb', line 15

def self.build(tournament:, csp:, constraints: nil)
  new(tournament: tournament, constraints: constraints).build(csp)
end

Instance Method Details

#build(csp) ⇒ Object



24
25
26
27
28
# File 'lib/sports_manager/constraint_builder.rb', line 24

def build(csp)
  constraints.map do |constraint|
    constraint.for_tournament(tournament: tournament, csp: csp)
  end
end