# HG changeset patch # User Franz Glasner # Date 1726667851 -7200 # Node ID f29f53749a1cbe65a71eadd1886af2a5799f8d75 # Parent 88191982522d2d0b14fcee4ff01206e6a56a4fc3 farray.sh: farray_get() and farray_tryget() now uses the _farr_make_index() function. So general indexes are supported now. diff -r 88191982522d -r f29f53749a1c share/local-bsdtools/farray.sh --- a/share/local-bsdtools/farray.sh Wed Sep 18 15:56:47 2024 +0200 +++ b/share/local-bsdtools/farray.sh Wed Sep 18 15:57:31 2024 +0200 @@ -557,11 +557,7 @@ [ -z "${__farr_varname}" ] && _farr_fatal "missing variable name" shift _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" @@ -597,11 +593,7 @@ shift _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 return 1 diff -r 88191982522d -r f29f53749a1c tests/farray-array.t --- a/tests/farray-array.t Wed Sep 18 15:56:47 2024 +0200 +++ b/tests/farray-array.t Wed Sep 18 15:57:31 2024 +0200 @@ -2,6 +2,7 @@ Shell is /bin/sh. + Setup ===== @@ -76,6 +77,7 @@ [1] $ check_no_array_artifacts + Equality ======== @@ -117,6 +119,64 @@ $ farray_destroy TEST2 $ check_no_array_artifacts + +Get +=== + + $ farray_create TEST 0 1 2 '3 4 5' $'" 678" \\\'910 ' 11 + + $ farray_get _var TEST 1 + $ echo $_var + 0 + $ farray_tryget _var TEST 1 + $ echo $_var + 0 + $ farray_get _var TEST -5 + $ echo $_var + 0 + $ farray_tryget _var TEST -5 + $ echo $_var + 0 + $ farray_get _var TEST 6 + $ echo $_var + 11 + $ farray_tryget _var TEST 6 + $ echo $_var + 11 + $ farray_get _var TEST 0 + $ echo $_var + 11 + $ farray_tryget _var TEST 0 + $ echo $_var + 11 + $ farray_get _var TEST 5 + $ echo $_var + " 678" \'910 + $ farray_tryget _var TEST 5 + $ echo $_var + " 678" \'910 + $ farray_get _var TEST -1 + $ echo $_var + " 678" \'910 + $ farray_tryget _var TEST -1 + $ echo $_var + " 678" \'910 + + $ farray_tryget _var TEST -6 + [1] + $ ( farray_get _var TEST -6 ) + ERROR: array index out of bounds + [70] + $ farray_tryget _var TEST 7 + [1] + $ ( farray_get _var TEST 7 ) + ERROR: array index out of bounds + [70] + + $ farray_destroy TEST + $ check_no_array_artifacts + + Splicing ========