diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-01-07 23:33:38 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-01-07 23:33:38 +0000 |
commit | 23f982ecda3fd74867d404b5e784f072db9a1cde (patch) | |
tree | 18a122eec695455c794caa554012fe1ee721ffa6 /lib/puppet/parameter.rb | |
parent | 1d739731b20a5dd10a190d783556d5c5a0275137 (diff) | |
download | puppet-23f982ecda3fd74867d404b5e784f072db9a1cde.tar.gz puppet-23f982ecda3fd74867d404b5e784f072db9a1cde.tar.xz puppet-23f982ecda3fd74867d404b5e784f072db9a1cde.zip |
Undoing the merge that happened in 785
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@786 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parameter.rb')
-rw-r--r-- | lib/puppet/parameter.rb | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/lib/puppet/parameter.rb b/lib/puppet/parameter.rb deleted file mode 100644 index d2656b766..000000000 --- a/lib/puppet/parameter.rb +++ /dev/null @@ -1,196 +0,0 @@ -module Puppet - class Parameter < Puppet::Element - class << self - attr_reader :validater, :munger, :name, :default - attr_accessor :ismetaparameter, :element - - # This means that 'nil' is an invalid default value. - def defaultto(value = nil, &block) - if block - @default = block - else - @default = value - end - end - - # Store documentation for this parameter. - def desc(str) - @doc = str - end - - # This is how we munge the value. Basically, this is our - # opportunity to convert the value from one form into another. - def munge(&block) - # I need to wrap the unsafe version in begin/rescue statements, - # but if I directly call the block then it gets bound to the - # class's context, not the instance's, thus the two methods, - # instead of just one. - define_method(:unsafe_munge, &block) - - define_method(:munge) do |*args| - begin - unsafe_munge(*args) - rescue Puppet::Error => detail - Puppet.debug "Reraising %s" % detail - raise - rescue => detail - raise Puppet::DevError, "Munging failed for class %s: %s" % - [self.name, detail] - end - end - #@munger = block - end - - def inspect - "Parameter(#{self.name})" - end - - # Mark whether we're the namevar. - def isnamevar - @isnamevar = true - @required = true - end - - # Is this parameter the namevar? Defaults to false. - def isnamevar? - if defined? @isnamevar - return @isnamevar - else - return false - end - end - - # This parameter is required. - def isrequired - @required = true - end - - # Is this parameter required? Defaults to false. - def required? - if defined? @required - return @required - else - return false - end - end - - def to_s - if self.ismetaparameter - "Puppet::Type::" + @name.to_s.capitalize - else - self.element.to_s + @name.to_s.capitalize - end - end - - # Verify that we got a good value - def validate(&block) - #@validater = block - define_method(:unsafe_validate, &block) - - define_method(:validate) do |*args| - begin - unsafe_validate(*args) - rescue ArgumentError, Puppet::Error, TypeError - raise - rescue => detail - raise Puppet::DevError, - "Validate method failed for class %s: %s" % - [self.name, detail] - end - end - end - end - - # Just a simple method to proxy instance methods to class methods - def self.proxymethods(*values) - values.each { |val| - eval "def #{val}; self.class.#{val}; end" - } - end - - # And then define one of these proxies for each method in our - # ParamHandler class. - proxymethods("required?", "default", "isnamevar?") - - attr_accessor :parent - - # This doesn't work, because the instance_eval doesn't bind the inner block - # only the outer one. -# def munge(value) -# if munger = self.class.munger -# return @parent.instance_eval { -# munger.call(value) -# } -# else -# return value -# end -# end -# -# def validate(value) -# if validater = self.class.validater -# return @parent.instance_eval { -# validater.call(value) -# } -# end -# end - - def default - default = self.class.default - if default.is_a?(Proc) - val = self.instance_eval(&default) - return val - else - return default - end - end - - # This should only be called for parameters, but go ahead and make - # it possible to call for states, too. - def value - if self.is_a?(Puppet::State) - return self.should - else - return @value - end - end - - # Store the value provided. All of the checking should possibly be - # late-binding (e.g., users might not exist when the value is assigned - # but might when it is asked for). - def value=(value) - # If we're a state, just hand the processing off to the should method. - if self.is_a?(Puppet::State) - return self.should = value - end - if respond_to?(:validate) - validate(value) - end - - if respond_to?(:munge) - value = munge(value) - end - @value = value - end - - def to_s - "%s => %s" % [self.class.name, self.value] - end - - def inspect - s = "Parameter(%s = %s" % [self.name, self.value || "nil"] - if defined? @parent - s += ", @parent = %s)" % @parent - else - s += ")" - end - end - - def name - self.class.name - end - - def to_s - s = "Parameter(%s)" % self.name - end - end -end |