diff options
Diffstat (limited to 'lib/puppet/util')
-rw-r--r-- | lib/puppet/util/variables.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/puppet/util/variables.rb b/lib/puppet/util/variables.rb new file mode 100644 index 000000000..7e04cf1c0 --- /dev/null +++ b/lib/puppet/util/variables.rb @@ -0,0 +1,39 @@ +module Puppet::Util::Variables + def inithooks + @instance_init_hooks.dup + end + + def initvars + return unless defined? @class_init_hooks + self.inithooks.each do |var, value| + if value.is_a?(Class) + instance_variable_set("@" + var.to_s, value.new) + else + instance_variable_set("@" + var.to_s, value) + end + end + end + + def instancevar(hash) + @instance_init_hooks ||= {} + + unless method_defined?(:initvars) + define_method(:initvars) do + self.class.inithooks.each do |var, value| + if value.is_a?(Class) + instance_variable_set("@" + var.to_s, value.new) + else + instance_variable_set("@" + var.to_s, value) + end + end + end + end + hash.each do |var, value| + raise("Already initializing %s" % var) if @instance_init_hooks[var] + + @instance_init_hooks[var] = value + end + end +end + +# $Id$ |