module Chervil::AST class Conditional attr_reader :predicate attr_reader :true_branch attr_reader :false_branch def initialize(predicate, true_branch, false_branch) @predicate = predicate @true_branch = true_branch @false_branch = false_branch end def ==(other) @predicate == other.predicate && @true_branch == other.true_branch && @false_branch == other.false_branch end def evaluate(env) if @predicate.evaluate(env) == false @false_branch.evaluate(env) else @true_branch.evaluate(env) end end end end