Add specialized associative array routines

This commit is contained in:
Nick Chambers 2021-11-16 12:40:47 -06:00
parent e6640e6c3b
commit 6a855e1d60
1 changed files with 28 additions and 2 deletions

30
rowbot
View File

@ -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() {