# HG changeset patch # User Franz Glasner # Date 1726668831 -7200 # Node ID 4babcf9abc1a7ce5f966a0a734d6837f297afd75 # Parent f29f53749a1cbe65a71eadd1886af2a5799f8d75 farray.sh: farray_del() now accepts general index value diff -r f29f53749a1c -r 4babcf9abc1a share/local-bsdtools/farray.sh --- a/share/local-bsdtools/farray.sh Wed Sep 18 15:57:31 2024 +0200 +++ b/share/local-bsdtools/farray.sh Wed Sep 18 16:13:51 2024 +0200 @@ -617,11 +617,7 @@ local __farr_token __farr_gvrname __farr_len __farr_idx _farr_array_get_meta "$@" - __farr_index="${2-}" - [ -z "${__farr_index}" ] && _farr_fatal "no valid index given" - # make it to a number - __farr_index=$((__farr_index + 0)) - + _farr_make_index __farr_index "${2-}" "${__farr_len}" # check index range if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then _farr_fatal "array index out of bounds" diff -r f29f53749a1c -r 4babcf9abc1a tests/farray-array.t --- a/tests/farray-array.t Wed Sep 18 15:57:31 2024 +0200 +++ b/tests/farray-array.t Wed Sep 18 16:13:51 2024 +0200 @@ -177,6 +177,65 @@ $ check_no_array_artifacts +Deleting +======== + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + $ farray_del TEST 1 + $ farray_debug TEST + DEBUG: array `TEST' has length 5 + DEBUG: its contents: + DEBUG: 1: `1' + DEBUG: 2: `2' + DEBUG: 3: `3 4 5' + DEBUG: 4: `" 678" \'910 ' + DEBUG: 5: `11' + $ farray_destroy TEST + $ check_no_array_artifacts + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + $ farray_del TEST 0 + $ farray_debug TEST + DEBUG: array `TEST' has length 5 + DEBUG: its contents: + DEBUG: 1: `0' + DEBUG: 2: `1' + DEBUG: 3: `2' + DEBUG: 4: `3 4 5' + DEBUG: 5: `" 678" \'910 ' + $ farray_destroy TEST + $ check_no_array_artifacts + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + $ farray_del TEST 4 + $ farray_debug TEST + DEBUG: array `TEST' has length 5 + DEBUG: its contents: + DEBUG: 1: `0' + DEBUG: 2: `1' + DEBUG: 3: `2' + DEBUG: 4: `" 678" \'910 ' + DEBUG: 5: `11' + $ farray_destroy TEST + $ check_no_array_artifacts + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + $ ( farray_del TEST "" ) + ERROR: array index out of bounds + [70] + + $ farray_destroy TEST + $ check_no_array_artifacts + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + $ ( farray_del TEST 7 ) + ERROR: array index out of bounds + [70] + + $ farray_destroy TEST + $ check_no_array_artifacts + + Splicing ========