summaryrefslogtreecommitdiff
path: root/bool2num.rb
diff options
context:
space:
mode:
authorKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-29 20:07:56 +0100
committerKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2011-04-29 20:07:56 +0100
commit07847be9b99913d3c94899b36da191e609c28a38 (patch)
tree6bc1ff99b94ace639384df8fab272e50223f5be3 /bool2num.rb
parent5e9721983a6239338dea13b8efaef9f679bebb33 (diff)
Added proper handling of both FalseClass and TrueClass. We also
return real integer values now over string-encoded integers. Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
Diffstat (limited to 'bool2num.rb')
-rw-r--r--bool2num.rb44
1 files changed, 26 insertions, 18 deletions
diff --git a/bool2num.rb b/bool2num.rb
index c197b17..eddd051 100644
--- a/bool2num.rb
+++ b/bool2num.rb
@@ -3,30 +3,38 @@
#
module Puppet::Parser::Functions
- newfunction(:bool2num, :type => :rvalue, :doc => <<-EOS
+ newfunction(:bool2number, :type => :rvalue, :doc => <<-EOS
EOS
) do |arguments|
- raise(Puppet::ParseError, "bool2num(): Wrong number of arguments " +
+ raise(Puppet::ParseError, "bool2number(): Wrong number of arguments " +
"given (#{arguments.size} for 1)") if arguments.size < 1
- boolean = arguments[0]
+ value = arguments[0]
+ klass = value.class
- 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')
+ if not [FalseClass, String, TrueClass].include?(klass)
+ raise(Puppet::ParseError, 'bool2number(): Requires either an ' +
+ 'boolean or string to work with')
+ end
+
+ if value.is_a?(String)
+ result = case value
+ #
+ # 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|y|true|yes)$/ then 1
+ when /^(0|f|n|false|no)$/ then 0
+ # This is not likely to happen ...
+ when /^(undef|undefined)$/ then 0
+ else
+ raise(Puppet::ParseError, 'bool2number(): Unknown type of boolean given')
+ end
+ else
+ # We have real boolean values as well ...
+ result = value ? 1 : 0
end
return result