Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 769:03350d2a2af6
farray.sh: Add public functions to check whether a given value refers to a object (array, alist).
Implemented also "farray_isref()", "falist_isref()" and "fobject_isref()".
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 23 Oct 2024 01:00:33 +0200 |
| parents | 53d05f470f4a |
| children | 56ab5c012d5f |
| files | share/local-bsdtools/farray.sh tests/farray-alist.t tests/farray-array.t tests/farray-object.t |
| diffstat | 4 files changed, 96 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh Tue Oct 22 11:48:39 2024 +0200 +++ b/share/local-bsdtools/farray.sh Wed Oct 23 01:00:33 2024 +0200 @@ -443,10 +443,10 @@ #: -#: Implementation of typing +#: Implementation of variable typing #: #: Args: -#: $1 (str): The (variable) name of an object +#: $1 (str): The variable name of an object #: #: Output (stdout): #: - array: an array @@ -495,6 +495,30 @@ #: +#: Check whether a given value is an array or alist reference. +#: +#: Args: +#: $1 (str): The value to check +#: +#: Returns: +#: int: 0 (truthy) if `$1` is a reference to an object (array or alist), +#: 1 otherwise +#: +fobject_isref() { + case "$1" in + '') + return 1;; + "${_farr_array_token_prefix}"*) + return 0;; + "${_farr_alist_token_prefix}"*) + return 0;; + *) + return 1;; + esac +} + + +#: #: Just an official alias for `fobject_type` #: farray_type() { @@ -503,10 +527,32 @@ #: +#: Check whether a given value is an array reference. +#: +#: Args: +#: $1 (str): The value to check +#: +#: Returns: +#: int: 0 (truthy) if `$1` is a reference to an array, +#: 1 otherwise +#: +farray_isref() { + case "$1" in + '') + return 1;; + "${_farr_array_token_prefix}"*) + return 0;; + *) + return 1;; + esac +} + + +#: #: Test whether `$1` is an array. #: #: Args: -#: $1 (str): The name of an object +#: $1 (str): The variable name of an object #: #: Returns: #: int: 0 if `$1` is an array, 1 otherwise @@ -2052,10 +2098,32 @@ #: +#: Check whether a given value is an alist reference. +#: +#: Args: +#: $1 (str): The value to check +#: +#: Returns: +#: int: 0 (truthy) if `$1` is a reference to an alist, +#: 1 otherwise +#: +falist_isref() { + case "$1" in + '') + return 1;; + "${_farr_alist_token_prefix}"*) + return 0;; + *) + return 1;; + esac +} + + +#: #: Test whether `$1` is an alist. #: #: Args: -#: $1 (str): The name of an object +#: $1 (str): The variable name of an object #: #: Returns: #: int: 0 if `$1` is an alist, 1 otherwise
--- a/tests/farray-alist.t Tue Oct 22 11:48:39 2024 +0200 +++ b/tests/farray-alist.t Wed Oct 23 01:00:33 2024 +0200 @@ -921,6 +921,13 @@ $ falist_type LIST alist (no-eol) $ falist_isalist LIST + + $ falist_isref "$LIST" + $ falist_isref LIST + [1] + $ falist_isref '' + [1] + $ falist_release LIST $ check_no_alist_artifacts
--- a/tests/farray-array.t Tue Oct 22 11:48:39 2024 +0200 +++ b/tests/farray-array.t Wed Oct 23 01:00:33 2024 +0200 @@ -1254,6 +1254,13 @@ $ falist_type TEST array (no-eol) $ farray_isarray TEST + + $ farray_isref "$TEST" + $ farray_isref TEST + [1] + $ farray_isref '' + [1] + $ farray_release TEST $ check_no_array_artifacts
--- a/tests/farray-object.t Tue Oct 22 11:48:39 2024 +0200 +++ b/tests/farray-object.t Wed Oct 23 01:00:33 2024 +0200 @@ -22,6 +22,11 @@ array (no-eol) $ falist_type ARRAY1 array (no-eol) + $ fobject_isref "$ARRAY1" + $ fobject_isref ARRAY1 + [1] + $ fobject_isref '' + [1] $ farray_create ITEM1 i11 i22 $ farray_append ARRAY1 "$ITEM1" $ farray_release ITEM1 @@ -60,6 +65,11 @@ alist (no-eol) $ farray_type LIST1 alist (no-eol) + $ fobject_isref "$LIST1" + $ fobject_isref LIST1 + [1] + $ fobject_isref '' + [1] $ falist_create ITEM1 k11 v11 k22 v22 k33 v33 k44 v44 $ falist_set LIST1 k2 "$ITEM1" $ falist_release ITEM1
