Sha256: 166fe2eb3f90113ea88f4f594c8955040063aec6b5c21a2fbff40d40fdad9b31
Contents?: true
Size: 1.15 KB
Versions: 170
Compression:
Stored size: 1.15 KB
Contents
require 'puppet' require 'puppet/parser/ast/branch' class Puppet::Parser::AST class BooleanOperator < AST::Branch attr_accessor :operator, :lval, :rval # Iterate across all of our children. 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 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 def initialize(hash) super raise ArgumentError, "Invalid boolean operator #{@operator}" unless %w{and or}.include?(@operator) end end end
Version data entries
170 entries across 170 versions & 5 rubygems