summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast/resource_defaults.rb
blob: 8f9c1b8df26e41552a7b09d04d71d4d2a8a8c60a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require 'puppet/parser/ast/branch'

class Puppet::Parser::AST
    # A statement syntactically similar to an ResourceDef, but uses a
    # capitalized object type and cannot have a name.  
    class ResourceDefaults < AST::Branch
        attr_accessor :type, :params

        # As opposed to ResourceDef, this stores each default for the given
        # object type.
        def evaluate(hash)
            scope = hash[:scope]

            # Use a resource reference to canonize the type
            ref = Puppet::ResourceReference.new(@type, "whatever")
            type = ref.type
            params = @params.safeevaluate(:scope => scope)

            parsewrap do
                scope.setdefaults(type, params)
            end
        end
    end
end