test again

This commit is contained in:
crowetic 2025-07-15 18:04:15 -07:00
parent ad7430c3d3
commit a226e34803

View File

@ -11,40 +11,35 @@ NC='\033[0m'
render_gradient_string() {
local input="$1"
local regex='^#([0-9a-fA-F]{6})(.)'
local regex='#([0-9a-fA-F]{6})(.)'
while [[ -n "$input" ]]; do
if [[ "$input" =~ $regex ]]; then
local color="${BASH_REMATCH[1]}"
while [[ "$input" =~ $regex ]]; do
local hex="${BASH_REMATCH[1]}"
local char="${BASH_REMATCH[2]}"
local r=$((16#${color:0:2}))
local g=$((16#${color:2:2}))
local b=$((16#${color:4:2}))
local r=$((16#${hex:0:2}))
local g=$((16#${hex:2:2}))
local b=$((16#${hex:4:2}))
printf "\e[38;2;%d;%d;%dm%s" "$r" "$g" "$b" "$char"
input="${input:9}" # Skip "#rrggbbX" (7+1=8, +1 for safety)
else
printf "%s" "${input:0:1}"
input="${input:1}"
fi
input="${input#"#${hex}${char}"}"
done
echo -e "\e[0m"
}
rainbowize_text() {
local text="$1"
local freq=0.15
local freq=0.2
local i=0
local pi=3.14159265
local output=""
clamp() {
local val="$1" min="$2" max="$3"
(( val < min )) && echo "$min" && return
(( val > max )) && echo "$max" && return
echo "$val"
if (( val < min )); then echo "$min"; elif (( val > max )); then echo "$max"; else echo "$val"; fi
}
while IFS= read -r -n1 char || [[ -n "$char" ]]; do
@ -53,17 +48,15 @@ rainbowize_text() {
continue
fi
r=$(awk -v i=$i -v f=$freq 'BEGIN { printf("%d", 127 * (sin(f*i + 0) + 1)) }')
g=$(awk -v i=$i -v f=$freq 'BEGIN { printf("%d", 127 * (sin(f*i + 2*3.1415/3) + 1)) }')
b=$(awk -v i=$i -v f=$freq 'BEGIN { printf("%d", 127 * (sin(f*i + 4*3.1415/3) + 1)) }')
r=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 0) + 1)) }')
g=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 2*3.1415/3) + 1)) }')
b=$(awk -v i="$i" -v f="$freq" 'BEGIN { printf("%d", 127 * (sin(f*i + 4*3.1415/3) + 1)) }')
r=$(clamp "$r" 50 230)
g=$(clamp "$g" 50 230)
b=$(clamp "$b" 50 230)
hex=$(printf '%02x%02x%02x' "$r" "$g" "$b")
output+="#${hex}${char}"
r=$(clamp "$r" 60 200)
g=$(clamp "$g" 60 200)
b=$(clamp "$b" 60 200)
output+="#$(printf "%02x%02x%02x" "$r" "$g" "$b")$char"
((i++))
done <<< "$text"
@ -71,6 +64,7 @@ rainbowize_text() {
}
# rainbowize_text() {
# local text="$1"
# local freq=0.15