Add multiple dec and inc support to karma. - annna - Annna the nice friendly bot.
 (HTM) 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
 (HTM) 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