eaa14041446fe0bbd7b0a2c8ee959991ba6d7c1c
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / squeeze.rb
1 #
2 # squeeze.rb
3 #
4 module Puppet::Parser::Functions
5   newfunction(:squeeze, :type => :rvalue, :doc => <<-DOC
6     Returns a new string where runs of the same character that occur in this set are replaced by a single character.
7   DOC
8              ) do |arguments|
9
10     if (arguments.size != 2) && (arguments.size != 1)
11       raise(Puppet::ParseError, "squeeze(): Wrong number of arguments given #{arguments.size} for 2 or 1")
12     end
13
14     item = arguments[0]
15     squeezeval = arguments[1]
16
17     if item.is_a?(Array)
18       if squeezeval
19         item.map { |i| i.squeeze(squeezeval) }
20       else
21         item.map { |i| i.squeeze }
22       end
23     elsif squeezeval
24       item.squeeze(squeezeval)
25     else
26       item.squeeze
27     end
28   end
29 end
30
31 # vim: set ts=2 sw=2 et :