# File lib/puppet/parser/ast/boolean_operator.rb, line 40 def initialize(hash) super raise ArgumentError, "Invalid boolean operator #{@operator}" unless %w{and or}.include?(@operator) end
Iterate across all of our children.
# File lib/puppet/parser/ast/boolean_operator.rb, line 10 def each [@lval,@rval,@operator].each { |child| yield child } end
Returns a boolean which is the result of the boolean operation of lval and rval operands
# File lib/puppet/parser/ast/boolean_operator.rb, line 16 def evaluate(scope) # evaluate the first operand, should return a boolean value lval = @lval.safeevaluate(scope) # return result # lazy evaluate right operand case @operator when "and" if Puppet::Parser::Scope.true?(lval) rval = @rval.safeevaluate(scope) Puppet::Parser::Scope.true?(rval) else # false and false == false false end when "or" if Puppet::Parser::Scope.true?(lval) true else rval = @rval.safeevaluate(scope) Puppet::Parser::Scope.true?(rval) end end end