summaryrefslogtreecommitdiff
path: root/bool2num.rb
diff options
context:
space:
mode:
authorKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-25 03:19:10 +0100
committerKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-25 03:19:10 +0100
commit87a825e6094ead24da36b64937bbd24ccd9d7d39 (patch)
tree3d481bb70d50bb3d4029c84bf22966fd29c0eaa1 /bool2num.rb
parent914d5c2f38dd5c19d1b222c47ca6ba680277f6d6 (diff)
First version. Improvment upon bool2num function found on the Internet.
Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
Diffstat (limited to 'bool2num.rb')
-rw-r--r--bool2num.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/bool2num.rb b/bool2num.rb
new file mode 100644
index 0000000..c197b17
--- /dev/null
+++ b/bool2num.rb
@@ -0,0 +1,36 @@
+#
+# 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 :