Class: Puppet::Parser::AST::CaseStatement
- Defined in:
- lib/puppet/parser/ast/casestatement.rb
Overview
The basic logical structure in Puppet. Supports a list of tests and statement arrays.
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
#default ⇒ Object
7 8 9 |
# File 'lib/puppet/parser/ast/casestatement.rb', line 7 def default @default end |
Instance Method Details
#each ⇒ Object
37 38 39 |
# File 'lib/puppet/parser/ast/casestatement.rb', line 37 def each [@test,@options].each { |child| yield child } end |
#evaluate(scope) ⇒ Object
Short-curcuit evaluation. Return the value of the statements for the first option that matches.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/puppet/parser/ast/casestatement.rb', line 13 def evaluate(scope) level = scope.ephemeral_level value = @test.safeevaluate(scope) # Iterate across the options looking for a match. default = nil @options.each do |option| option.eachopt do |opt| return option.safeevaluate(scope) if opt.evaluate_match(value, scope) end default = option if option.default? end # Unless we found something, look for the default. return default.safeevaluate(scope) if default Puppet.debug "No true answers and no default" return nil ensure scope.unset_ephemeral_var(level) end |