module Fbe::Award::PTerm

def to_s

def to_s
  case @op
  when :total
    'total'
  when :if
    "if #{to_p(@operands[0])} then #{to_p(@operands[1])} else #{to_p(@operands[2])}"
  when :and
    @operands.map(&:to_s).join(' and ')
  when :or
    @operands.map(&:to_s).join(' or ')
  when :not
    "not #{@operands[0]}"
  when :eq
    "#{to_p(@operands[0])} = #{to_p(@operands[1])}"
  when :lt
    "#{to_p(@operands[0])} < #{to_p(@operands[1])}"
  when :lte
    "#{to_p(@operands[0])}#{to_p(@operands[1])}"
  when :gt
    "#{to_p(@operands[0])} > #{to_p(@operands[1])}"
  when :gte
    "#{to_p(@operands[0])}#{to_p(@operands[1])}"
  when :div
    "#{to_p(@operands[0])} ÷ #{to_p(@operands[1])}"
  when :times
    "#{to_p(@operands[0])} × #{to_p(@operands[1])}"
  when :plus
    "#{to_p(@operands[0])} + #{to_p(@operands[1])}"
  when :minus
    "#{to_p(@operands[0])} - #{to_p(@operands[1])}"
  when :max
    "maximum of #{to_p(@operands[0])} and #{to_p(@operands[1])}"
  when :min
    "minimum of #{to_p(@operands[0])} and #{to_p(@operands[1])}"
  when :between
    "at least #{to_p(@operands[0])} and at most #{to_p(@operands[1])}"
  else
    raise "Unknown term '#{@op}'"
  end
end