Reimplement and simplify Hugo's template system

See #13541 for details.

Fixes #13545
Fixes #13515
Closes #7964
Closes #13365
Closes #12988
Closes #4891
This commit is contained in:
Bjørn Erik Pedersen
2025-04-06 19:55:35 +02:00
parent 812ea0b325
commit 83cfdd78ca
138 changed files with 5342 additions and 4396 deletions

View File

@@ -17,8 +17,6 @@ import (
"fmt"
"strings"
"sync"
radix "github.com/armon/go-radix"
)
var _ MutableTrees = MutableTrees{}
@@ -60,11 +58,9 @@ func (ctx *WalkContext[T]) AddPostHook(handler func() error) {
ctx.HooksPost = append(ctx.HooksPost, handler)
}
func (ctx *WalkContext[T]) Data() *SimpleTree[any] {
func (ctx *WalkContext[T]) Data() *SimpleThreadSafeTree[any] {
ctx.dataInit.Do(func() {
ctx.data = &SimpleTree[any]{
tree: radix.New(),
}
ctx.data = NewSimpleThreadSafeTree[any]()
})
return ctx.data
}
@@ -191,7 +187,7 @@ func (t MutableTrees) CanLock() bool {
// WalkContext is passed to the Walk callback.
type WalkContext[T any] struct {
data *SimpleTree[any]
data *SimpleThreadSafeTree[any]
dataInit sync.Once
eventHandlers eventHandlers[T]
events []*Event[T]