summaryrefslogtreecommitdiff
path: root/lib/chef/mixin/params_validate.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/mixin/params_validate.rb')
-rw-r--r--lib/chef/mixin/params_validate.rb61
1 files changed, 19 insertions, 42 deletions
diff --git a/lib/chef/mixin/params_validate.rb b/lib/chef/mixin/params_validate.rb
index baf210bfc5..78d72dc801 100644
--- a/lib/chef/mixin/params_validate.rb
+++ b/lib/chef/mixin/params_validate.rb
@@ -81,58 +81,34 @@ class Chef
DelayedEvaluator.new(&block)
end
- NULL_ARG = Object.new
-
- def nillable_set_or_return(symbol, arg, validation)
+ def set_or_return(symbol, arg, validation)
iv_symbol = "@#{symbol.to_s}".to_sym
- if NULL_ARG.equal?(arg)
- if self.instance_variable_defined?(iv_symbol) == true
- get_ivar(iv_symbol, symbol, validation)
+ if arg == nil && self.instance_variable_defined?(iv_symbol) == true
+ ivar = self.instance_variable_get(iv_symbol)
+ if(ivar.is_a?(DelayedEvaluator))
+ validate({ symbol => ivar.call }, { symbol => validation })[symbol]
else
- # on access we create the iv and set it to nil for back-compat
- set_ivar(iv_symbol, symbol, nil, validation)
+ ivar
end
else
- set_ivar(iv_symbol, symbol, arg, validation)
- end
- end
+ if(arg.is_a?(DelayedEvaluator))
+ val = arg
+ else
+ val = validate({ symbol => arg }, { symbol => validation })[symbol]
- def set_or_return(symbol, arg, validation)
- iv_symbol = "@#{symbol.to_s}".to_sym
- if arg == nil && self.instance_variable_defined?(iv_symbol) == true
- get_ivar(iv_symbol, symbol, validation)
- else
- set_ivar(iv_symbol, symbol, arg, validation)
+ # Handle the case where the "default" was a DelayedEvaluator. In
+ # this case, the block yields an optional parameter of +self+,
+ # which is the equivalent of "new_resource"
+ if val.is_a?(DelayedEvaluator)
+ val = val.call(self)
+ end
+ end
+ self.instance_variable_set(iv_symbol, val)
end
end
private
- def get_ivar(iv_symbol, symbol, validation)
- ivar = self.instance_variable_get(iv_symbol)
- if(ivar.is_a?(DelayedEvaluator))
- validate({ symbol => ivar.call }, { symbol => validation })[symbol]
- else
- ivar
- end
- end
-
- def set_ivar(iv_symbol, symbol, arg, validation)
- if(arg.is_a?(DelayedEvaluator))
- val = arg
- else
- val = validate({ symbol => arg }, { symbol => validation })[symbol]
-
- # Handle the case where the "default" was a DelayedEvaluator. In
- # this case, the block yields an optional parameter of +self+,
- # which is the equivalent of "new_resource"
- if val.is_a?(DelayedEvaluator)
- val = val.call(self)
- end
- end
- self.instance_variable_set(iv_symbol, val)
- end
-
# Return the value of a parameter, or nil if it doesn't exist.
def _pv_opts_lookup(opts, key)
if opts.has_key?(key.to_s)
@@ -263,3 +239,4 @@ class Chef
end
end
end
+