Implement an IRC line parser

This commit is contained in:
Nick Chambers 2021-06-14 18:23:36 -05:00
parent 12073a87e7
commit f91d64b7b5
1 changed files with 34 additions and 1 deletions

35
rowbot
View File

@ -78,5 +78,38 @@ recv() {
###
while recv line; do
declare -p line
params=( ) has_words=no orig_line=$line
if [[ $line = :* ]]; then
src=${line%% *} src=${src#:}
line=${line#:"$src"} line=${line# }
from=${src%@*} ident=${from#*!}
from=${from%!*} host=${src#*@}
fi
cmd=${line%% *} line=${line#"$cmd"} line=${line# }
while [[ $line ]]; do
if [[ $line = :* ]]; then
params+=("${line:1}")
line=""
has_words=yes
else
params=${line%% *}
params+=( "$param" )
line=${line#"$param"} line=${line# }
fi
done
if [[ $has_words = yes ]]; then
read -ra words <<< "${params[@]:(-1)}"
else
words=( )
fi
if hash "on_${cmd^^}" 2>/dev/null; then
"on_${cmd^^}"
else
declare -p line
fi
done