The basic logical structure in Puppet. Supports a list of tests and statement arrays.
# File lib/puppet/parser/ast/casestatement.rb, line 40 def each [@test,@options].each { |child| yield child } end
Short-curcuit evaluation. Return the value of the statements for the first option that matches.
# File lib/puppet/parser/ast/casestatement.rb, line 13 def evaluate(scope) level = scope.ephemeral_level value = @test.safeevaluate(scope) retvalue = nil found = false # 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