# 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 = @params.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:                 res = Puppet::Parser::Resource.new(
40:                     :type => r.type,
41:                     :title => r.title,
42:                     :params => params,
43:                     :file => file,
44:                     :line => line,
45:                     :source => scope.source,
46:                     :scope => scope
47:                 )
48: 
49:                 # Now we tell the scope that it's an override, and it behaves as
50:                 # necessary.
51:                 scope.compiler.add_override(res)
52: 
53:                 res
54:             end
55:             # decapsulate array in case of only one item
56:             return resource.pop if resource.length == 1
57:             return resource
58:         end