Add multiple dec and inc support to karma. - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit b0f43472e72697cedd16851cb5ca418f1af19b75 DIR parent 87623b17fd2492141331a0647ddca3ba830c65ec HTML Author: Annna Robert-Houdin <annna@bitreich.org> Date: Sun, 18 Sep 2022 11:02:14 +0200 Add multiple dec and inc support to karma. Diffstat: M karma | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) --- DIR diff --git a/karma b/karma @@ -13,20 +13,20 @@ function setkarmaval { } function parsekarma { - karmatag="$(printf "%s\n" "${1}" | sed -e 's,\(.*\)[+|-]\{2\}$,\1,')" + karmatag="$(printf "%s\n" "${1}" | sed -e 's,^\([a-zA-Z_0-9]*\).*$,\1,')" [ -z "${karmatag}" ] && karmatag="karma" printf "%s\n" "${karmatag}" } function getkarmaval { - karmatag="$(parsekarma "${1}")" - karmaval="$(grep "^${karmatag}" "${karmadb}" | cut -f 2)" + karmatag="${1}" + karmaval="$(grep -P "^${karmatag}\t" "${karmadb}" | cut -f 2)" [ -z "${karmaval}" ] && printf "0\n" printf "%s\n" "${karmaval}" } function modifykarma { - karmatag="$(parsekarma "$1")" + karmatag="$1" karmaval=$(getkarmaval "${karmatag}") newkarmaval="$(printf "%d%s\n" "${karmaval}" "$2" | bc)" setkarmaval "${karmatag}" $newkarmaval @@ -34,24 +34,39 @@ function modifykarma { } function inckarma { - modifykarma "$1" " + 1" + modifykarma "$1" " + $2" } function deckarma { - modifykarma "$1" " - 1" + modifykarma "$1" " - $2" +} + +function parsechangevalue { + printf "%s\n" "${1}" | sed -e 's,.*[+|-]=\([0-9\-]*\),\1,' } karmastr="$1" +karmatag="$(parsekarma "${karmastr}")" case "${karmastr}" in *" "*) ;; *","*) ;; +*+=*) + inckarma "${karmatag}" "$(parsechangevalue "${karmastr}")" + ;; *++) - inckarma "${karmastr}" + inckarma "${karmatag}" "1" + ;; +*-=*) + deckarma "${karmatag}" "$(parsechangevalue "${karmastr}")" ;; *--) - deckarma "${karmastr}" + deckarma "${karmatag}" "1" + ;; +"${karmatag}") + karmaval="$(getkarmaval "${karmatag}")" + printf "%s = %d\n" "$karmatag" "$karmaval" ;; *) sort -r -k 2 "${karmadb}" | column -t