--- /dev/null
+#
+# bool2num.rb
+#
+
+module Puppet::Parser::Functions
+ newfunction(:bool2num, :type => :rvalue, :doc => <<-EOS
+ EOS
+ ) do |arguments|
+
+ raise(Puppet::ParseError, "bool2num(): Wrong number of arguments " +
+ "given (#{arguments.size} for 1)") if arguments.size < 1
+
+ boolean = arguments[0]
+
+ result = case boolean
+ #
+ # This is how undef looks like in Puppet ...
+ # We yield 0 (or false if you wish) in this case.
+ #
+ when /^$/, '' then '0'
+ when /^(1|t|true)$/ then '1'
+ when /^(0|f|false)$/ then '0'
+ # This is not likely to happen ...
+ when /^(undef|undefined)$/ then '0'
+ # We may get real boolean values as well ...
+ when true then '1'
+ when false then '0'
+ else
+ raise(Puppet::ParseError, 'bool2num(): Unknown type of boolean given')
+ end
+
+ return result
+ end
+end
+
+# vim: set ts=2 sw=2 et :
EOS
) do |arguments|
- raise(Puppet::ParseError, "Wrong number of arguments " +
- "given (#{arguments.size} for 2)") if arguments.size < 2
+ raise(Puppet::ParseError, "load_variables(): Wrong number of " +
+ "arguments given (#{arguments.size} for 2)") if arguments.size < 2
data = {}
begin
data = YAML.load_file(file)
rescue => error
- raise(Puppet::ParseError, "Unable to load data " +
+ raise(Puppet::ParseError, "load_variables(): Unable to load data " +
"from the file `%s': %s" % file, error.to_s)
end
- raise(Puppet::ParseError, "Data in the file `%s' " +
+ raise(Puppet::ParseError, "load_variables(): Data in the file `%s' " +
"is not a hash" % file) unless data.is_a?(Hash)
data = ((data[key] and data[key].is_a?(Hash)) ? data[key] : {}) if key
end
- data.each { |param, value| setvar(param, strinterp(value)) }
+ data.each do |param, value|
+ value = strinterp(value) # Evaluate any interpolated variable names ...
+
+ setvar(param, value)
+ end
end
end