14: def evaluate(scope)
15: level = scope.ephemeral_level
16:
17: paramvalue = @param.safeevaluate(scope)
18:
19: default = nil
20:
21: @values = [@values] unless @values.instance_of? AST::ASTArray or @values.instance_of? Array
22:
23:
24: @values.each do |obj|
25:
26: return obj.value.safeevaluate(scope) if obj.param.evaluate_match(paramvalue, scope)
27:
28:
29: default = obj if obj.param.is_a?(Default)
30: end
31:
32:
33: return default.value.safeevaluate(scope) if default
34:
35: self.fail Puppet::ParseError, "No matching value for selector param '#{paramvalue}'"
36: ensure
37: scope.unset_ephemeral_var(level)
38: end