summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/variables.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-10 20:59:10 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-10 20:59:10 +0000
commited89572efd487b595aed943cd6b7a2920003b49d (patch)
tree15483007621113784c73f1b5b5e5832d58512e34 /lib/puppet/util/variables.rb
parentb4fd8d18ed58bbfb947d5f348f28141c92c22f3a (diff)
downloadpuppet-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.rb39
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$