Add specialized associative array routines
This commit is contained in:
parent
e6640e6c3b
commit
6a855e1d60
1 changed files with 28 additions and 2 deletions
30
rowbot
30
rowbot
|
@ -13,6 +13,32 @@ stty -echoctl
|
||||||
|
|
||||||
# cerealizers
|
# 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() {
|
put_array() {
|
||||||
# The variable named array is a nameref to an array
|
# The variable named array is a nameref to an array
|
||||||
# shellcheck disable=SC2178
|
# shellcheck disable=SC2178
|
||||||
|
@ -568,11 +594,11 @@ on_msg_005_welcome() {
|
||||||
}
|
}
|
||||||
|
|
||||||
on_sys_before_001_welcome() {
|
on_sys_before_001_welcome() {
|
||||||
put_array isupport
|
put_assoc_array isupport
|
||||||
}
|
}
|
||||||
|
|
||||||
on_sys_after_999_welcome() {
|
on_sys_after_999_welcome() {
|
||||||
get_array isupport
|
get_assoc_array isupport
|
||||||
}
|
}
|
||||||
|
|
||||||
on_sys_register_999_welcome() {
|
on_sys_register_999_welcome() {
|
||||||
|
|
Loading…
Reference in a new issue