No auto generated shortlinks :(

Can't autogenerate shortlinks, as there are too many for byjp.fyi to handle! The file can't be larger than 64kb in the one file.

Keep the process for manually shortlinked files — even if it's now a little complex!
This commit is contained in:
JP Hastings-Spital 2024-07-16 23:33:23 +01:00
parent b4586a52d8
commit 92a6169419
2 changed files with 5 additions and 33 deletions

View file

@ -1,5 +1,6 @@
{{ range .Site.RegularPages }}
{{- if .Permalink -}}
{{- printf "/%s %s 301\n" (partial "shortlink.txt" .) .Permalink -}}
{{- range .Site.RegularPages -}}
{{- $shortlink := partial "shortlink.txt" . -}}
{{- if and .Permalink $shortlink -}}
{{- printf "/%s %s 301\n" $shortlink .Permalink -}}
{{- end -}}
{{- end -}}

View file

@ -1,30 +1 @@
{{- $shortlink := .Params.shortlink -}}
{{- $chars := split "123456789bcdfghjkmnpqrstuvwxyz" "" -}}{{/* Omit vowels and confusing characters to prevent accidental spelling of words */}}
{{- $base := len $chars -}}
{{- $size := 8 -}}{{/* 8 chars with 30 possibilities means 0.0091% chance of collision with 10k posts; I currently have 3,213 */}}
{{- if and (not $shortlink) .IsPage -}}{{/* Don't make dynamic shortlinks for list taxonomy/list/non-regular pages */}}
{{- $hex := .RelPermalink | crypto.MD5 -}}
{{- $idx := 0 -}}
{{- $n := 0 -}}
{{- $enc := slice -}}
{{- range (split $hex "") | collections.Reverse -}}
{{- $dec := int (printf "0x%s" .) -}}
{{- $n = add $dec (mul $n 16) -}}
{{- range seq 2 -}}
{{- if le $n $base -}}{{ break }}{{- end -}}
{{- $amt := (mod $n $base) -}}
{{- $char := index $chars $amt }}
{{- $enc = $enc | append $char -}}
{{- $n = div $n $base -}}
{{- end -}}
{{- if ge (len $enc) $size -}}{{- break -}}{{- end -}}
{{- end -}}
{{- $shortlink = printf "b/%s" (delimit ($enc | collections.Reverse) "") -}}
{{- end -}}
{{- $shortlink -}}
{{- .Params.shortlink | default "" -}}