# File lib/puppet/parser/scope.rb, line 108
108:     def initialize(hash = {})
109:         if hash.include?(:namespace)
110:             if n = hash[:namespace]
111:                 @namespaces = [n]
112:             end
113:             hash.delete(:namespace)
114:         else
115:             @namespaces = [""]
116:         end
117:         hash.each { |name, val|
118:             method = name.to_s + "="
119:             if self.respond_to? method
120:                 self.send(method, val)
121:             else
122:                 raise Puppet::DevError, "Invalid scope argument %s" % name
123:             end
124:         }
125: 
126:         @tags = []
127: 
128:         # The symbol table for this scope.  This is where we store variables.
129:         @symtable = {}
130: 
131:         # the ephemeral symbol tables
132:         # those should not persist long, and are used for the moment only
133:         # for $0..$xy capture variables of regexes
134:         @ephemeral = {}
135: 
136:         # All of the defaults set for types.  It's a hash of hashes,
137:         # with the first key being the type, then the second key being
138:         # the parameter.
139:         @defaults = Hash.new { |dhash,type|
140:             dhash[type] = {}
141:         }
142:     end