Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / flatten.rb
1 #
2 # flatten.rb
3 #
4 module Puppet::Parser::Functions
5   newfunction(:flatten, :type => :rvalue, :doc => <<-DOC
6     @summary
7       This function flattens any deeply nested arrays and returns a single flat array
8       as a result.
9
10     @return
11       convert nested arrays into a single flat array
12
13     @example Example usage
14
15       flatten(['a', ['b', ['c']]])` returns: `['a','b','c']
16
17     > **Note:** **Deprecated** from Puppet 5.5.0, this function has been replaced with a
18     built-in [`flatten`](https://puppet.com/docs/puppet/latest/function.html#flatten) function.
19   DOC
20              ) do |arguments|
21
22     raise(Puppet::ParseError, "flatten(): Wrong number of arguments given (#{arguments.size} for 1)") if arguments.size != 1
23
24     array = arguments[0]
25
26     unless array.is_a?(Array)
27       raise(Puppet::ParseError, 'flatten(): Requires array to work with')
28     end
29
30     result = array.flatten
31
32     return result
33   end
34 end
35
36 # vim: set ts=2 sw=2 et :