diff options
author | Mark McKinstry <mmckinst@umich.edu> | 2015-10-15 22:22:10 -0400 |
---|---|---|
committer | Mark McKinstry <mmckinst@umich.edu> | 2015-10-15 22:22:10 -0400 |
commit | 6de1a6e0622f69ec22c64e72fd53ec12ae8c9111 (patch) | |
tree | 7b1580633e6f65ffd693dbc273c9dfc97226ada9 /lib | |
parent | 5b3c623394e405ca0db5e707554a91b4252bbbad (diff) |
add functionality to bool2str to return strings of your choice for a boolean
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/parser/functions/bool2str.rb | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/lib/puppet/parser/functions/bool2str.rb b/lib/puppet/parser/functions/bool2str.rb index fcd3791..7e36474 100644 --- a/lib/puppet/parser/functions/bool2str.rb +++ b/lib/puppet/parser/functions/bool2str.rb @@ -4,15 +4,29 @@ module Puppet::Parser::Functions newfunction(:bool2str, :type => :rvalue, :doc => <<-EOS - Converts a boolean to a string. + Converts a boolean to a string using optionally supplied arguments. The + optional second and third arguments represent what true and false will be + converted to respectively. If only one argument is given, it will be + converted from a boolean to a string containing 'true' or 'false'. + + *Examples:* + + bool2str(true) => 'true' + bool2str(true, 'yes', 'no') => 'yes' + bool2str(false, 't', 'f') => 'f' + Requires a single boolean as an input. EOS ) do |arguments| - raise(Puppet::ParseError, "bool2str(): Wrong number of arguments " + - "given (#{arguments.size} for 1)") if arguments.size < 1 + unless arguments.size == 1 or arguments.size == 3 + raise(Puppet::ParseError, "bool2str(): Wrong number of arguments " + + "given (#{arguments.size} for 3)") + end value = arguments[0] + true_string = arguments[1] || 'true' + false_string = arguments[2] || 'false' klass = value.class # We can have either true or false, and nothing else @@ -20,7 +34,11 @@ module Puppet::Parser::Functions raise(Puppet::ParseError, 'bool2str(): Requires a boolean to work with') end - return value.to_s + unless [true_string, false_string].all?{|x| x.kind_of?(String)} + raise(Puppet::ParseError, "bool2str(): Requires strings to convert to" ) + end + + return value ? true_string : false_string end end |