diff options
Diffstat (limited to 'code/environments/production/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb')
-rw-r--r-- | code/environments/production/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/code/environments/production/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb b/code/environments/production/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb new file mode 100644 index 0000000..e02aa53 --- /dev/null +++ b/code/environments/production/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb @@ -0,0 +1,24 @@ +# +# is_function_available.rb +# +module Puppet::Parser::Functions + newfunction(:is_function_available, :type => :rvalue, :doc => <<-DOC + This function accepts a string as an argument, determines whether the + Puppet runtime has access to a function by that name. It returns a + true if the function exists, false if not. + DOC + ) do |arguments| + + if arguments.size != 1 + raise(Puppet::ParseError, "is_function_available?(): Wrong number of arguments given #{arguments.size} for 1") + end + + # Only allow String types + return false unless arguments[0].is_a?(String) + + function = Puppet::Parser::Functions.function(arguments[0].to_sym) + function.is_a?(String) && !function.empty? + end +end + +# vim: set ts=2 sw=2 et : |