diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-10-10 20:59:10 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-10-10 20:59:10 +0000 |
commit | ed89572efd487b595aed943cd6b7a2920003b49d (patch) | |
tree | 15483007621113784c73f1b5b5e5832d58512e34 /lib/puppet/util/variables.rb | |
parent | b4fd8d18ed58bbfb947d5f348f28141c92c22f3a (diff) | |
download | puppet-ed89572efd487b595aed943cd6b7a2920003b49d.tar.gz puppet-ed89572efd487b595aed943cd6b7a2920003b49d.tar.xz puppet-ed89572efd487b595aed943cd6b7a2920003b49d.zip |
Committing the metatype branch -- this is just splitting the type.rb code into multiple files for readability
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1762 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/util/variables.rb')
-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$ |