From ed89572efd487b595aed943cd6b7a2920003b49d Mon Sep 17 00:00:00 2001 From: luke Date: Tue, 10 Oct 2006 20:59:10 +0000 Subject: 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 --- lib/puppet/util/variables.rb | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/puppet/util/variables.rb (limited to 'lib/puppet/util') 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$ -- cgit