diff options
author | Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> | 2011-04-29 18:40:07 +0100 |
---|---|---|
committer | Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> | 2011-04-29 18:40:07 +0100 |
commit | e0559c174ecd78d7b3f2cb589e6ab02a9c8ce561 (patch) | |
tree | 5139b02ae5fd112fbe923c7873f72fc62c050c4f | |
parent | aa2237bcb68cf6edd5d55aa2f754d00d011d3aa5 (diff) | |
download | puppet-stdlib-e0559c174ecd78d7b3f2cb589e6ab02a9c8ce561.tar.gz puppet-stdlib-e0559c174ecd78d7b3f2cb589e6ab02a9c8ce561.tar.bz2 |
Adding support for strings to the the function unique.
Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
-rw-r--r-- | unique.rb | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -2,8 +2,6 @@ # unique.rb # -# TODO(Krzysztof Wilczynski): Support for strings would be nice too ... - module Puppet::Parser::Functions newfunction(:unique, :type => :rvalue, :doc => <<-EOS EOS @@ -12,13 +10,24 @@ module Puppet::Parser::Functions raise(Puppet::ParseError, "unique(): Wrong number of arguments " + "given (#{arguments.size} for 1)") if arguments.size < 1 - array = arguments[0] + value = arguments[0] + klass = value.class - if not array.is_a?(Array) - raise(Puppet::ParseError, 'unique(): Requires an array to work with') + if not [Array, String].include?(klass) + raise(Puppet::ParseError, 'unique(): Requires either an ' + + 'array or string to work with') end - result = array.uniq + result = value.clone + + string_type = value.is_a?(String) ? true : false + + # We turn any string value into an array to be able to shuffle ... + result = string_type ? result.split('') : result + + result = result.uniq + + result = string_type ? result.join : result return result end |