14: def evaluate(scope)
15:
16: paramvalue = @param.safeevaluate(scope)
17:
18: sensitive = Puppet[:casesensitive]
19:
20: paramvalue = paramvalue.downcase if not sensitive and paramvalue.respond_to?(:downcase)
21:
22: default = nil
23:
24: unless @values.instance_of? AST::ASTArray or @values.instance_of? Array
25: @values = [@values]
26: end
27:
28:
29: @values.each do |obj|
30:
31: return obj.value.safeevaluate(scope) if obj.param.evaluate_match(paramvalue, scope, :file => file, :line => line, :sensitive => sensitive)
32:
33:
34: default = obj if obj.param.is_a?(Default)
35: end
36:
37:
38: return default.value.safeevaluate(scope) if default
39:
40: self.fail Puppet::ParseError, "No matching value for selector param '%s'" % paramvalue
41: ensure
42: scope.unset_ephemeral_var
43: end