Update stdlib and concat to 6.1.0 both
[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     @summary
7       Returns a new string where runs of the same character that occur in this set are replaced by a single character.
8
9     @return
10       a new string where runs of the same character that occur in this set are replaced by a single character.
11   DOC
12              ) do |arguments|
13
14     if (arguments.size != 2) && (arguments.size != 1)
15       raise(Puppet::ParseError, "squeeze(): Wrong number of arguments given #{arguments.size} for 2 or 1")
16     end
17
18     item = arguments[0]
19     squeezeval = arguments[1]
20
21     if item.is_a?(Array)
22       if squeezeval
23         item.map { |i| i.squeeze(squeezeval) }
24       else
25         item.map { |i| i.squeeze }
26       end
27     elsif squeezeval
28       item.squeeze(squeezeval)
29     else
30       item.squeeze
31     end
32   end
33 end
34
35 # vim: set ts=2 sw=2 et :