Implement a fix for #16

This commit is contained in:
Nick Chambers 2021-07-19 22:09:11 -05:00
parent bb0a43f3fc
commit 18f291fe07
1 changed files with 35 additions and 1 deletions

36
rowbot
View File

@ -31,6 +31,17 @@ die() {
exit "${STATUS:-42}"
}
get_array() {
local entry idx_size
declare -n scalar=ARR_${1^^}
declare -n array=$1
while read -r entry; do
idx_size=${entry%%:*} entry=${entry#"$idx_size":}
array[${entry:0:idx_size}]=${entry:idx_size}
done <<< "$scalar"
}
get_option() {
if (( ! $# )); then
return 1
@ -82,6 +93,21 @@ is_running () {
kill -0 "$1" 2>/dev/null
}
put_array() {
# The variable named array is a nameref to an array
# shellcheck disable=SC2178
declare -n array=$1
declare -n scalar=ARR_${1^^}
local key
for key in "${!array[@]}"; do
scalar+=${#key}:$key${array[$key]}$'\n'
done
scalar=${scalar%$'\n'}
export "ARR_${1^^}"
}
random() {
local min=$1 max=$2
printf %d "$(( (RANDOM % max) + min ))"
@ -473,10 +499,10 @@ on_sys_first_003_welcome() {
on_sys_init_999_welcome() {
get_option chan ""
declare -gA isupport
}
on_msg_005_welcome() {
declare -gA isupport
local param key value
for param in "${msg_args[@]:1:${#msg_args[@]}-2}"; do
@ -491,6 +517,14 @@ on_msg_005_welcome() {
done
}
on_sys_before_001_welcome() {
put_array isupport
}
on_sys_after_999_welcome() {
get_array isupport
}
on_sys_register_999_welcome() {
if [[ ${config[chan]} ]]; then
irc_join "${config[chan]}"