mirror of
https://github.com/gohugoio/hugo.git
synced 2025-09-02 22:52:51 +02:00
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:
@@ -71,6 +71,81 @@ AMP.
|
||||
|
||||
`
|
||||
|
||||
func TestDeferNoBaseof(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files := `
|
||||
-- hugo.toml --
|
||||
-- layouts/index.html --
|
||||
Home.
|
||||
{{ with (templates.Defer (dict "key" "foo")) }}
|
||||
Defer
|
||||
{{ end }}
|
||||
-- content/_index.md --
|
||||
---
|
||||
title: "Home"
|
||||
---
|
||||
|
||||
`
|
||||
|
||||
b := hugolib.Test(t, files)
|
||||
|
||||
b.AssertFileContent("public/index.html", "Home.\n\n Defer")
|
||||
}
|
||||
|
||||
func TestDeferBaseof(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files := `
|
||||
-- hugo.toml --
|
||||
-- layouts/baseof.html --
|
||||
{{ with (templates.Defer (dict "key" "foo")) }}
|
||||
Defer
|
||||
{{ end }}
|
||||
Block:{{ block "main" . }}{{ end }}$
|
||||
-- layouts/index.html --
|
||||
{{ define "main" }}
|
||||
Home.
|
||||
{{ end }}
|
||||
-- content/_index.md --
|
||||
---
|
||||
title: "Home"
|
||||
---
|
||||
|
||||
`
|
||||
|
||||
b := hugolib.Test(t, files)
|
||||
|
||||
b.AssertFileContent("public/index.html", "Home.\n\n Defer")
|
||||
}
|
||||
|
||||
func TestDeferMain(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files := `
|
||||
-- hugo.toml --
|
||||
-- layouts/baseof.html --
|
||||
|
||||
Block:{{ block "main" . }}{{ end }}$
|
||||
-- layouts/index.html --
|
||||
{{ define "main" }}
|
||||
Home.
|
||||
{{ with (templates.Defer (dict "key" "foo")) }}
|
||||
Defer
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
-- content/_index.md --
|
||||
---
|
||||
title: "Home"
|
||||
---
|
||||
|
||||
`
|
||||
|
||||
b := hugolib.Test(t, files)
|
||||
|
||||
b.AssertFileContent("public/index.html", "Home.\n\n Defer")
|
||||
}
|
||||
|
||||
func TestDeferBasic(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@@ -44,7 +44,7 @@ type Namespace struct {
|
||||
// Note that this is the Unix-styled relative path including filename suffix,
|
||||
// e.g. partials/header.html
|
||||
func (ns *Namespace) Exists(name string) bool {
|
||||
return ns.deps.Tmpl().HasTemplate(name)
|
||||
return ns.deps.GetTemplateStore().HasTemplate(name)
|
||||
}
|
||||
|
||||
// Defer defers the execution of a template block.
|
||||
@@ -93,7 +93,7 @@ func (ns *Namespace) DoDefer(ctx context.Context, id string, optsv any) string {
|
||||
_, _ = ns.deps.BuildState.DeferredExecutions.Executions.GetOrCreate(id,
|
||||
func() (*tpl.DeferredExecution, error) {
|
||||
return &tpl.DeferredExecution{
|
||||
TemplateName: templateName,
|
||||
TemplatePath: templateName,
|
||||
Ctx: ctx,
|
||||
Data: opts.Data,
|
||||
Executed: false,
|
||||
|
Reference in New Issue
Block a user