Class: Puppet::Parser::AST::BooleanOperator

Inherits:
Branch show all
Defined in:
lib/vendor/puppet/parser/ast/boolean_operator.rb

Constant Summary

Constants inherited from Puppet::Parser::AST

AST

Constants included from Util::Docs

Util::Docs::HEADER_LEVELS

Instance Attribute Summary collapse

Attributes inherited from Branch

#children, #pin

Attributes inherited from Puppet::Parser::AST

#file, #line, #parent, #scope

Attributes included from Util::Docs

#doc, #nodoc

Instance Method Summary collapse

Methods inherited from Puppet::Parser::AST

associates_doc, #evaluate_match, #inspect, #parsefail, #parsewrap, #safeevaluate, settor?, #use_docs

Methods included from Util::Docs

#desc, #dochook, #doctable, #markdown_definitionlist, #markdown_header, #nodoc?, #pad, scrub

Methods included from Util::MethodHelper

#requiredopts, #set_options, #symbolize_options

Methods included from Util::Errors

#adderrorcontext, #devfail, #error_context, #exceptwrap, #fail

Constructor Details

#initialize(hash) ⇒ BooleanOperator

Returns a new instance of BooleanOperator.

Raises:

  • (ArgumentError)


40
41
42
43
44
# File 'lib/vendor/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

Instance Attribute Details

#lvalObject

Returns the value of attribute lval.



7
8
9
# File 'lib/vendor/puppet/parser/ast/boolean_operator.rb', line 7

def lval
  @lval
end

#operatorObject

Returns the value of attribute operator.



7
8
9
# File 'lib/vendor/puppet/parser/ast/boolean_operator.rb', line 7

def operator
  @operator
end

#rvalObject

Returns the value of attribute rval.



7
8
9
# File 'lib/vendor/puppet/parser/ast/boolean_operator.rb', line 7

def rval
  @rval
end

Instance Method Details

#eachObject

Iterate across all of our children.



10
11
12
# File 'lib/vendor/puppet/parser/ast/boolean_operator.rb', line 10

def each
  [@lval,@rval,@operator].each { |child| yield child }
end

#evaluate(scope) ⇒ Object

Returns a boolean which is the result of the boolean operation of lval and rval operands



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/vendor/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