Add script for doing djb2-based term colorization
This commit is contained in:
parent
7110e32037
commit
3ca523b0ee
41
utils/scripts/hash-colorize.sh
Normal file
41
utils/scripts/hash-colorize.sh
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/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
|
Loading…
Reference in New Issue
Block a user