demarches-normaliennes/app/models/logic/and.rb

18 lines
455 B
Ruby

class Logic::And < Logic::NAryOperator
attr_reader :operands
def operator_name = 'Et'
def compute(champs = [])
@operands.map { |operand| operand.compute(champs) }.all?
end
def computable?(champs = [])
return true if sources.blank?
champs.filter { _1.stable_id.in?(sources) && _1.visible? }
.all? { _1.value.present? }
end
def to_s(type_de_champs) = "(#{@operands.map { |o| o.to_s(type_de_champs) }.join(' && ')})"
end