From 6a855e1d60f3ae0a4780e7c87bc3cae7d87f53ae Mon Sep 17 00:00:00 2001 From: Nick Chambers Date: Tue, 16 Nov 2021 12:40:47 -0600 Subject: [PATCH] Add specialized associative array routines --- rowbot | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/rowbot b/rowbot index d563658..8483545 100755 --- a/rowbot +++ b/rowbot @@ -13,6 +13,32 @@ stty -echoctl # cerealizers +put_assoc_array() { + declare -n assoc_array=$1 + declare -n scalar=RB_AA_${1^^} + local key + + for key in "${!assoc_array[@]}"; do + scalar+=${#key},${#assoc_array[$key]}:$key${assoc_array[$key]} + done + + export "RB_AA_${1^^}" +} + +get_assoc_array() { + declare -n assoc_array=$1 + declare -n scalar=RB_AA_${1^^} + + while [[ $scalar ]]; do + key_len=${scalar%%,*} val_len=${scalar#*,} + val_len=${val_len%%:*} scalar=${scalar#"$key_len","$val_len":} + assoc_array[${scalar:0:key_len}]=${scalar:key_len:val_len} + scalar=${scalar:key_len + val_len} + done + + unset "RB_AA_${1^^}" +} + put_array() { # The variable named array is a nameref to an array # shellcheck disable=SC2178 @@ -568,11 +594,11 @@ on_msg_005_welcome() { } on_sys_before_001_welcome() { - put_array isupport + put_assoc_array isupport } on_sys_after_999_welcome() { - get_array isupport + get_assoc_array isupport } on_sys_register_999_welcome() {