Puppet Function: delete

Defined in:
vendor_modules/stdlib/lib/puppet/parser/functions/delete.rb
Function type:
Ruby 3.x API

Summary

Deletes all instances of a given element from an array, substring from a string, or key from a hash.

Overview

delete()String, ...

> Note: From Puppet 4.0.0 the minus (-) operator deletes values from arrays and keys from a hash `'a'=>1,'b'=>2,'c'=>3 - ['b','c'])` > A global delete from a string can be performed with the [`regsubst`](puppet.com/docs/puppet/latest/function.html#regsubst) function: `'abracadabra'.regsubst(/bra/, '', 'G')`

In general, the built-in [`filter`](puppet.com/docs/puppet/latest/function.html#filter) function can filter out entries from arrays and hashes based on keys and/or values.

Examples:

Example usage


delete(['a','b','c','b'], 'b')
Would return: ['a','c']

delete({'a'=>1,'b'=>2,'c'=>3}, 'b')
Would return: {'a'=>1,'c'=>3}

delete({'a'=>1,'b'=>2,'c'=>3}, ['b','c'])
Would return: {'a'=>1}

delete('abracadabra', 'bra')
Would return: 'acada'

['a', 'b', 'c', 'b'] - 'b'
Would return: ['a', 'c']

{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
Would return: {'a' => '1'}

'abracadabra'.regsubst(/bra/, '', 'G')
Would return: 'acada'

Returns:

  • (String)

    The filtered String, if one was given.

  • (Hash)

    The filtered Hash, if one was given.

  • (Array)

    The filtered Array, if one was given.



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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'vendor_modules/stdlib/lib/puppet/parser/functions/delete.rb', line 7

newfunction(:delete, type: :rvalue, doc: <<-DOC
  @summary
    Deletes all instances of a given element from an array, substring from a
    string, or key from a hash.

  @example Example usage

    delete(['a','b','c','b'], 'b')
    Would return: ['a','c']

    delete({'a'=>1,'b'=>2,'c'=>3}, 'b')
    Would return: {'a'=>1,'c'=>3}

    delete({'a'=>1,'b'=>2,'c'=>3}, ['b','c'])
    Would return: {'a'=>1}

    delete('abracadabra', 'bra')
    Would return: 'acada'

    ['a', 'b', 'c', 'b'] - 'b'
    Would return: ['a', 'c']

    {'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
    Would return: {'a' => '1'}

    'abracadabra'.regsubst(/bra/, '', 'G')
    Would return: 'acada'

  > *Note:*
  From Puppet 4.0.0 the minus (-) operator deletes values from arrays and keys from a hash
  `{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])`
  >
  A global delete from a string can be performed with the
  [`regsubst`](https://puppet.com/docs/puppet/latest/function.html#regsubst) function:
  `'abracadabra'.regsubst(/bra/, '', 'G')`

  In general, the built-in [`filter`](https://puppet.com/docs/puppet/latest/function.html#filter)
  function can filter out entries from arrays and hashes based on keys and/or values.

  @return [String] The filtered String, if one was given.
  @return [Hash] The filtered Hash, if one was given.
  @return [Array] The filtered Array, if one was given.
DOC
) do |arguments|
  raise(Puppet::ParseError, "delete(): Wrong number of arguments given #{arguments.size} for 2") unless arguments.size == 2

  collection = arguments[0].dup
  Array(arguments[1]).each do |item|
    case collection
    when Array, Hash
      collection.delete item
    when String
      collection.gsub! item, ''
    else
      raise(TypeError, "delete(): First argument must be an Array, String, or Hash. Given an argument of class #{collection.class}.")
    end
  end
  collection
end