Initial commit
This commit is contained in:
commit
df3e022729
|
@ -0,0 +1,55 @@
|
|||
#!/bin/zsh
|
||||
|
||||
FILE="$1"
|
||||
HEADER="$2"
|
||||
MODFILE="$3"
|
||||
IFS="$IFS;!}{.:"
|
||||
STYLESHEET_AR=($(< "$FILE"))
|
||||
STYLESHEET="$(< "$FILE")"
|
||||
typeset -A colorcnt
|
||||
typeset -A varnames
|
||||
for i in ${(Mc)${STYLESHEET_AR}:#\#??????} ${(Mc)STYLESHEET_AR:#\#???}; do
|
||||
colorcnt[$i]=$(( ${colorcnt[$i]:-0} + 1 ))
|
||||
done
|
||||
for k i in ${(@kv)colorcnt}; do
|
||||
local KEY="$(< /dev/urandom tr -dc A-Za-z0-9 | head -c 32)"
|
||||
typeset -a arr
|
||||
if [ ${#k} -eq 7 ]; then
|
||||
arr=(${k:1:2} ${k:3:2} ${k:5:2})
|
||||
elif [ ${#k} -eq 4 ]; then
|
||||
arr=("${k[2]}0" "${k[3]}0" "${k[4]}0")
|
||||
fi
|
||||
if [ ${#varnames} -gt 0 ]; then
|
||||
for name val in ${(@kv)varnames}; do
|
||||
skip=0
|
||||
local -a red=($(( 0x${val:0:2} )) $(( 0x${arr[1]} )))
|
||||
local -a green=($(( 0x${val:2:2} )) $(( 0x${arr[2]} )))
|
||||
local -a blue=($(( 0x${val:4:2} )) $(( 0x${arr[3]} )))
|
||||
for m x in ${(nO)red} ${(nO)green} ${(nO)blue}; do
|
||||
[ "$(( $m - $x ))" -gt 5 ] && skip=1 && break
|
||||
done
|
||||
[ $skip -eq 0 ] && <<< "Deduplicated #${(j::)arr} as #${val}" >&2 && break
|
||||
done
|
||||
if [ $skip -eq 0 ]; then
|
||||
STYLESHEET="$(<<< "$STYLESHEET" sed s/\\"$k"/"var(--$name)"/g)"
|
||||
<<< "Set $k as $name" >&2
|
||||
else
|
||||
STYLESHEET="$(<<< "$STYLESHEET" sed s/\\"$k"/"var(--$KEY)"/g)"
|
||||
<<< "Set $k as $KEY" >&2
|
||||
varnames[$KEY]="${(j::)arr}"
|
||||
fi
|
||||
else
|
||||
STYLESHEET="$(<<< "$STYLESHEET" sed s/\\"$k"/"var(--$KEY)"/g)"
|
||||
<<< "Set $k as $KEY" >&2
|
||||
varnames[$KEY]="${(j::)arr}"
|
||||
fi
|
||||
done
|
||||
(
|
||||
<<< ":root {"
|
||||
typeset -a sortname
|
||||
for name in ${(@nk)varnames}; do
|
||||
<<< $'\t'"--$name: #${varnames[$name]};"
|
||||
done
|
||||
<<< "}"
|
||||
) > "$HEADER"
|
||||
<<< "$STYLESHEET" > "$MODFILE"
|
Loading…
Reference in New Issue