diff --git a/rowbot b/rowbot index c117d64..151c3c3 100755 --- a/rowbot +++ b/rowbot @@ -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