URI: 
       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
       ---
       karma (1502B)
       ---
            1 #!/bin/sh
            2 
            3 karmamodbase="$HOME/bin/modules/karma"
            4 karmadb="${karmamodbase}/karma.txt"
            5 
            6 function setkarmaval {
            7         if [ -n "$(grep -P "^${1}\t" "${karmadb}")" ];
            8         then
            9                 sed -i "s,^${1}\t.*,${1}\t${2}," "${karmadb}"
           10         else
           11                 printf "%s\t%d\n" "${1}" "${2}" >> "${karmadb}"
           12         fi
           13 }
           14 
           15 function parsekarma {        
           16         karmatag="$(printf "%s\n" "${1}" | sed -e 's,^\([a-zA-Z_0-9]*\).*$,\1,')"
           17         [ -z "${karmatag}" ] && karmatag="karma"
           18         printf "%s\n" "${karmatag}"
           19 }
           20 
           21 function getkarmaval {
           22         karmatag="${1}"
           23         karmaval="$(grep -P "^${karmatag}\t" "${karmadb}" | cut -f 2)"
           24         [ -z "${karmaval}" ] && printf "0\n"
           25         printf "%s\n" "${karmaval}"
           26 }
           27 
           28 function modifykarma {
           29         karmatag="$1"
           30         karmaval=$(getkarmaval "${karmatag}")
           31         newkarmaval="$(printf "%d%s\n" "${karmaval}" "$2" | bc)"
           32         setkarmaval "${karmatag}" $newkarmaval
           33         printf "%s = %d\n" "$karmatag" "$newkarmaval"
           34 }
           35 
           36 function inckarma {
           37         modifykarma "$1" " + $2"
           38 }
           39 
           40 function deckarma {
           41         modifykarma "$1" " - $2"
           42 }
           43 
           44 function parsechangevalue {
           45         printf "%s\n" "${1}" | sed -e 's,.*[+|-]=\([0-9\-]*\),\1,'
           46 }
           47 
           48 karmastr="$1"
           49 karmatag="$(parsekarma "${karmastr}")"
           50 case "${karmastr}" in
           51 *" "*)
           52         ;;
           53 *","*)
           54         ;;
           55 *+=*)
           56         inckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
           57         ;;
           58 *++)
           59         inckarma "${karmatag}" "1"
           60         ;;
           61 *-=*)
           62         deckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
           63         ;;
           64 *--)
           65         deckarma "${karmatag}" "1"
           66         ;;
           67 "${karmatag}")
           68         karmaval="$(getkarmaval "${karmatag}")"
           69         printf "%s = %d\n" "$karmatag" "$karmaval"
           70         ;;
           71 *)
           72         sort -r -k 2 "${karmadb}" | column -t
           73         ;;
           74 esac
           75