X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fdelete_at.rb;fp=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fdelete_at.rb;h=0a1a9400b16f681f346d26f7c7f2ca66db6dd61b;hb=131e09855e065be940e104d9ab0f18940cc76257;hp=daf37212ee7df159a42779de377ce69238d5b137;hpb=407d322498f4fde815abf381007fbecfe5c10b2b;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..0a1a9400b 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,28 @@ # # 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 + Deletes a determined indexed value from an array. + + *Examples:* + + delete_at(['a','b','c'], 1) + + Would return: ['a','c'] + + Note that since Puppet 4 this can be done in general with the filter function: -*Examples:* + ['a', 'b', 'c'].filter |$pos, $val | { $pos != 1 } - delete_at(['a','b','c'], 1) + Or if a delete is wanted from the beginning or end of the array, by using the slice operator [ ]: -Would return: ['a','c'] - EOS - ) do |arguments| + $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 + DOC + ) do |arguments| raise(Puppet::ParseError, "delete_at(): Wrong number of arguments given (#{arguments.size} for 2)") if arguments.size < 2 @@ -24,7 +34,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