Back to Crossplane

Sorted Versions

themes/geekboot/layouts/partials/utils/sorted-versions.html

1.19-archive1.2 KB
Original Source

{{ $majordict := dict }} {{ $majorlist := slice }} {{ $sorted_list := slice }} {{/* Collect all versions and parse semver for sorting */}} {{ range .Site.Sections }} {{/* Skip versions marked as hidden */}} {{ if not .Page.Params.hidden }} {{ if eq .Page.Params.version "master" }} {{$sorted_list = $sorted_list | append "master" }} {{ else if and (.Page.Params.version) (ne .Page.Params.version "0") }} {{ $splitver := split .Page.Params.version "." }} {{ if eq (len $splitver) 2 }} {{ $verlist := (index $majordict (index $splitver 0)) }} {{ $verlist = $verlist | append (index $splitver 1) }} {{ $majordict = merge $majordict (dict (index $splitver 0) $verlist) }} {{ $majorlist = $majorlist | append (index $splitver 0) }} {{ end }} {{ end }} {{ end }} {{ end }} {{/* Sort versions by semver (descending) and prepend to sorted_list */}} {{ $semver_sorted := slice }} {{ range sort ($majorlist | uniq) "value" "desc" }} {{ $majorver := . }} {{ range sort (index $majordict .) "value" "desc" }} {{$semver_sorted = $semver_sorted | append (printf "%s.%s" $majorver .) }} {{ end }} {{ end }} {{/* Append semver sorted versions after master */}} {{ $sorted_list = $sorted_list | append $semver_sorted }} {{ return $sorted_list }}