diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/type.rb | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index 03d042a20..eb3bc2e03 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -390,31 +390,27 @@ class Type < Puppet::Element #--------------------------------------------------------------- #--------------------------------------------------------------- - def Type.validparam(name) - self.validstate(name) or self.validparameter(name) or false - end - #--------------------------------------------------------------- - - #--------------------------------------------------------------- # this abstracts accessing parameters and states, and normalizes # access to always be symbols, not strings def [](name) - mname = name if name.is_a?(String) - mname = name.intern - end - unless self.class.validparam(name) - raise "Invalid parameter %s" % [mname] + name = name.intern end - if @states.include?(mname) - # if they're using [], they don't know if we're a state or a string - # thus, return a string - # if they want the actual state object, they should use state() - return @states[mname].is - elsif @parameters.include?(mname) - return @parameters[mname] + + if self.class.validstate(name) + if @states.include?(name) + return @states[name].is + else + return nil + end + elsif self.class.validparameter(name) + if @parameters.include?(name) + return @parameters[name] + else + return nil + end else - return nil + raise TypeError.new("Invalid parameter %s" % [name]) end end #--------------------------------------------------------------- |