# File lib/puppet/parser/ast/resource_override.rb, line 23
23:     def evaluate(scope)
24:       # Get our object reference.
25:       resource = @object.safeevaluate(scope)
26: 
27:       hash = {}
28: 
29:       # Evaluate all of the specified params.
30:       params = @parameters.collect { |param|
31:         param.safeevaluate(scope)
32:       }
33: 
34:       # Now we just create a normal resource, but we call a very different
35:       # method on the scope.
36:       resource = [resource] unless resource.is_a?(Array)
37: 
38:       resource = resource.collect do |r|
39: 
40:               res = Puppet::Parser::Resource.new(
41:         r.type, r.title,
42:           :parameters => params,
43:           :file => file,
44:           :line => line,
45:           :source => scope.source,
46:         
47:           :scope => scope
48:         )
49: 
50:         # Now we tell the scope that it's an override, and it behaves as
51:         # necessary.
52:         scope.compiler.add_override(res)
53: 
54:         res
55:       end
56:       # decapsulate array in case of only one item
57:       return(resource.length == 1 ? resource.pop : resource)
58:     end