From 528a16e3770b289c7bae315bf54d9ab07f8d6654 Mon Sep 17 00:00:00 2001 From: Krzysztof Wilczynski Date: Tue, 26 Apr 2011 01:29:53 +0100 Subject: First version. Simple size function to use within Puppet DSL. Signed-off-by: Krzysztof Wilczynski --- size.rb | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 size.rb (limited to 'size.rb') diff --git a/size.rb b/size.rb new file mode 100644 index 0000000..1aba882 --- /dev/null +++ b/size.rb @@ -0,0 +1,45 @@ +# +# size.rb +# + +module Puppet::Parser::Functions + newfunction(:size, :type => :rvalue, :doc => <<-EOS + EOS + ) do |arguments| + + raise(Puppet::ParseError, "size(): Wrong number of arguments " + + "given (#{arguments.size} for 1)") if arguments.size < 1 + + item = arguments[0] + + if item.is_a?(String) + + begin + # + # Check whether your item is a numeric value or not ... + # This will take care about positive and/or negative numbers + # for both integer and floating-point values ... + # + # Please note that Puppet has no notion of hexadecimal + # nor octal numbers for at this point in time ... + # + Float(item) + + raise(Puppet::ParseError, 'size(): Requires either ' + + 'string or array to work with') + + rescue ArgumentError + result = item.size + end + + elsif item.is_a?(Array) + result = item.size + else + raise(Puppet::ParseError, 'size(): Unknown type given') + end + + return result + end +end + +# vim: set ts=2 sw=2 et : -- cgit v1.2.3