Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 593:f29f53749a1c
farray.sh: farray_get() and farray_tryget() now uses the _farr_make_index() function.
So general indexes are supported now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 18 Sep 2024 15:57:31 +0200 |
| parents | 88191982522d |
| children | 4babcf9abc1a |
| files | share/local-bsdtools/farray.sh tests/farray-array.t |
| diffstat | 2 files changed, 62 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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 ========
