File: array_suffix.rb

package info (click to toggle)
puppet-module-voxpupuli-elasticsearch 9.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,496 kB
  • sloc: ruby: 9,906; sh: 392; makefile: 4
file content (44 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true

# Top-level Puppet functions
module Puppet::Parser::Functions
  newfunction(
    :array_suffix,
    type: :rvalue,
    doc: <<~EOS
      This function applies a suffix to all elements in an array.

      *Examples:*

          array_suffix(['a','b','c'], 'p')

      Will return: ['ap','bp','cp']

      @return Array
    EOS
  ) do |arguments|
    # Technically we support two arguments but only first is mandatory ...
    if arguments.empty?
      raise(Puppet::ParseError, 'array_suffix(): Wrong number of arguments ' \
                                "given (#{arguments.size} for 1)")
    end

    array = arguments[0]

    raise Puppet::ParseError, "array_suffix(): expected first argument to be an Array, got #{array.inspect}" unless array.is_a?(Array)

    suffix = arguments[1] if arguments[1]

    raise Puppet::ParseError, "array_suffix(): expected second argument to be a String, got #{suffix.inspect}" if suffix && !(suffix.is_a? String)

    # Turn everything into string same as join would do ...
    result = array.map do |i|
      i = i.to_s
      suffix ? i + suffix : i
    end

    return result
  end
end

# vim: set ts=2 sw=2 et :