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>
This commit is contained in:
parent
5e9721983a
commit
07847be9b9
1 changed files with 26 additions and 18 deletions
44
bool2num.rb
44
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
|
||||
|
|
Loading…
Reference in a new issue