Make the shortcode template lookup for output formats stable

Fixes #7774
This commit is contained in:
Bjørn Erik Pedersen
2021-04-23 13:40:05 +02:00
parent 65c502cc81
commit 0d86a32d8f
2 changed files with 65 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ import (
"path/filepath"
"reflect"
"regexp"
"sort"
"strings"
"sync"
"time"
@@ -814,6 +815,24 @@ func (t *templateHandler) postTransform() error {
}
}
for _, v := range t.shortcodes {
sort.Slice(v.variants, func(i, j int) bool {
v1, v2 := v.variants[i], v.variants[j]
name1, name2 := v1.ts.Name(), v2.ts.Name()
isHTMl1, isHTML2 := strings.HasSuffix(name1, "html"), strings.HasSuffix(name2, "html")
// There will be a weighted selection later, but make
// sure these are sorted to get a stable selection for
// output formats missing specific templates.
// Prefer HTML.
if isHTMl1 || isHTML2 && !(isHTMl1 && isHTML2) {
return isHTMl1
}
return name1 < name2
})
}
return nil
}