42 lines
1.0 KiB
Bash
42 lines
1.0 KiB
Bash
#!/bin/sh
|
|
# env
|
|
# Written in 2021 by Lucas
|
|
# CC0 1.0 Universal/Public domain - No rights reserved
|
|
#
|
|
# To the extent possible under law, the author(s) have dedicated all
|
|
# copyright and related and neighboring rights to this software to the
|
|
# public domain worldwide. This software is distributed without any
|
|
# warranty. You should have received a copy of the CC0 Public Domain
|
|
# Dedication along with this software. If not, see
|
|
# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
|
|
|
djb2()
|
|
{
|
|
_djb2_s=$1 _djb2_h=${2:-5381}
|
|
while [ ${#_djb2_s} -gt 0 ]; do
|
|
_djb2_c=$(printf "%u" "'${_djb2_s%${_djb2_s#?}}")
|
|
_djb2_s=${_djb2_s#?}
|
|
_djb2_h=$(( ((($_djb2_h << 5) + $_djb2_h) ^ $_djb2_c) & 65535 ))
|
|
done
|
|
printf "%u\n" $_djb2_h
|
|
}
|
|
|
|
hash_colorize()
|
|
{
|
|
_h=
|
|
while :; do
|
|
_h=$(djb2 "$1" $_h)
|
|
# removes bias in number selection. Taken from
|
|
# arc4random_uniform source code.
|
|
[ $_h -ge 4 ] && break
|
|
done
|
|
_h=$(( $_h % 12 ))
|
|
tput setaf $(( $_h < 6 ? 1 + $_h : 9 + $_h - 6 )) 0 0
|
|
}
|
|
|
|
for a; do
|
|
hash_colorize "$a"
|
|
printf "%s\n" "$a"
|
|
tput sgr0
|
|
done
|