her.esy.fun/optim-classes.sh

40 lines
1,007 B
Bash
Raw Normal View History

2019-12-05 13:55:51 +00:00
#!/bin/zsh
2019-12-05 16:17:31 +00:00
classes=( $( {cat _site/**/*.html(N) | perl -p -e 's/class="?([a-zA-Z0-9_-]*)/\nCLASS: $1\n/g'; cat _site/**/*.css(N) | perl -p -e 's/\.([a-zA-Z-_][a-zA-Z0-9-_]*)/\nCLASS: $1\n/g'}|grep CLASS|sort -u|cut -d\ -f 2,2|awk 'length($1)>2 {print length($1),$1}'|sort -n|cut -d\ -f 2,2) )
2019-12-05 13:55:51 +00:00
chr() {
[ "$1" -lt 26 ] || return 1
printf "\\$(printf '%03o' $(( 97 + $1 )))"
}
shortName() {
if [ "$1" -gt 25 ]; then
print -- $(shortName $(( ( $1 / 26 ) - 1 )))$(shortName $(( $1 % 26 )))
else
chr $1
fi
}
i=0;
typeset -A assoc
for c in $classes; do
sn=$(shortName $i)
2019-12-05 16:07:57 +00:00
print "$c -> $sn"
2019-12-05 13:55:51 +00:00
assoc[$c]=$sn
((i++))
done
2019-12-05 16:17:31 +00:00
for fic in _site/**/*.{html,xml}(N); do
2019-12-05 13:55:51 +00:00
print -- $fic
2019-12-05 16:07:57 +00:00
for long in $classes; do
perl -pi -e 's#class=("?)'${long}'#class=$1'${assoc[$long]}'#g' $fic
done
2019-12-05 13:55:51 +00:00
done
2019-12-05 16:17:31 +00:00
for fic in _site/**/*.css(N); do
2019-12-05 13:55:51 +00:00
echo $fic
2019-12-05 16:07:57 +00:00
for long in $classes; do
perl -pi -e 's#\.'"${long}"'#.'"${assoc[$long]}"'#g' $fic
done
2019-12-05 13:55:51 +00:00
done