Class: Puppet::Parser::AST::IfStatement
- Inherits:
-
Branch
- Object
- Puppet::Parser::AST
- Branch
- Puppet::Parser::AST::IfStatement
- Defined in:
- lib/vendor/puppet/parser/ast/ifstatement.rb
Overview
A basic ‘if/elsif/else’ statement.
Constant Summary
Constants inherited from Puppet::Parser::AST
Constants included from Util::Docs
Instance Attribute Summary collapse
-
#else ⇒ Object
Returns the value of attribute else.
-
#statements ⇒ Object
Returns the value of attribute statements.
-
#test ⇒ Object
Returns the value of attribute test.
Attributes inherited from Branch
Attributes inherited from Puppet::Parser::AST
Attributes included from Util::Docs
Instance Method Summary collapse
- #each ⇒ Object
-
#evaluate(scope) ⇒ Object
Short-curcuit evaluation.
Methods inherited from Branch
Methods inherited from Puppet::Parser::AST
associates_doc, #evaluate_match, #initialize, #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
This class inherits a constructor from Puppet::Parser::AST::Branch
Instance Attribute Details
#else ⇒ Object
Returns the value of attribute else.
9 10 11 |
# File 'lib/vendor/puppet/parser/ast/ifstatement.rb', line 9 def else @else end |
#statements ⇒ Object
Returns the value of attribute statements.
9 10 11 |
# File 'lib/vendor/puppet/parser/ast/ifstatement.rb', line 9 def statements @statements end |
#test ⇒ Object
Returns the value of attribute test.
9 10 11 |
# File 'lib/vendor/puppet/parser/ast/ifstatement.rb', line 9 def test @test end |
Instance Method Details
#each ⇒ Object
11 12 13 |
# File 'lib/vendor/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/vendor/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 |