Class: Puppet::Parser::AST::IfStatement
- Defined in:
- lib/puppet/parser/ast/ifstatement.rb
Overview
A basic ‘if/elsif/else’ statement.
Instance Attribute Summary collapse
Attributes inherited from Branch
Instance Method Summary collapse
- #each ⇒ Object
-
#evaluate(scope) ⇒ Object
Short-curcuit evaluation.
Methods inherited from Branch
Constructor Details
This class inherits a constructor from Puppet::Parser::AST::Branch
Instance Attribute Details
#statements ⇒ Object
9 10 11 |
# File 'lib/puppet/parser/ast/ifstatement.rb', line 9 def statements @statements end |
Instance Method Details
#each ⇒ Object
11 12 13 |
# File 'lib/puppet/parser/ast/ifstatement.rb', line 11 def each [@test,@else,@statements].each { |child| yield child } end |
#evaluate(scope) ⇒ Object
Short-curcuit evaluation. If we’re true, evaluate our statements, else if there’s an ‘else’ setting, evaluate it. the first option that matches.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/puppet/parser/ast/ifstatement.rb', line 18 def evaluate(scope) level = scope.ephemeral_level value = @test.safeevaluate(scope) # let's emulate a new scope for each branches begin if Puppet::Parser::Scope.true?(value) return @statements.safeevaluate(scope) else return defined?(@else) ? @else.safeevaluate(scope) : nil end ensure scope.unset_ephemeral_var(level) end end |