X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fdelete_at.rb;h=992d7d8d6d77410812c741939c41c66291f5b476;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=daf37212ee7df159a42779de377ce69238d5b137;hpb=6963202b4b62c2816655ac9532521b018fdf83bd;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/delete_at.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/delete_at.rb index daf37212e..992d7d8d6 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/delete_at.rb @@ -1,18 +1,33 @@ # # delete_at.rb # - module Puppet::Parser::Functions - newfunction(:delete_at, :type => :rvalue, :doc => <<-EOS -Deletes a determined indexed value from an array. + newfunction(:delete_at, :type => :rvalue, :doc => <<-DOC) do |arguments| + @summary + Deletes a determined indexed value from an array. + + For example + ```delete_at(['a','b','c'], 1)``` + + Would return: `['a','c']` + + > *Note:* + Since Puppet 4 this can be done in general with the built-in + [`filter`](https://puppet.com/docs/puppet/latest/function.html#filter) function: + + ```['a', 'b', 'c'].filter |$pos, $val | { $pos != 1 }``` -*Examples:* + Or if a delete is wanted from the beginning or end of the array, by using the slice operator [ ]: + ``` + $array[0, -1] # the same as all the values + $array[2, -1] # all but the first 2 elements + $array[0, -3] # all but the last 2 elements + $array[1, -2] # all but the first and last element + ``` - delete_at(['a','b','c'], 1) + @return [Array] The given array, now missing the target value -Would return: ['a','c'] - EOS - ) do |arguments| + DOC raise(Puppet::ParseError, "delete_at(): Wrong number of arguments given (#{arguments.size} for 2)") if arguments.size < 2 @@ -24,7 +39,7 @@ Would return: ['a','c'] index = arguments[1] - if index.is_a?(String) and not index.match(/^\d+$/) + if index.is_a?(String) && !index.match(%r{^\d+$}) raise(Puppet::ParseError, 'delete_at(): You must provide non-negative numeric index') end