aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--common/maps/scratch.go19
-rw-r--r--hugolib/page.go3
-rw-r--r--hugolib/page__common.go6
-rw-r--r--hugolib/page__new.go1
-rw-r--r--hugolib/page_test.go26
-rw-r--r--resources/page/page.go4
6 files changed, 35 insertions, 24 deletions
diff --git a/common/maps/scratch.go b/common/maps/scratch.go
index e9f412540..638377216 100644
--- a/common/maps/scratch.go
+++ b/common/maps/scratch.go
@@ -28,25 +28,6 @@ type Scratch struct {
mu sync.RWMutex
}
-// Scratcher provides a scratching service.
-type Scratcher interface {
- // Scratch returns a "scratch pad" that can be used to store state.
- Scratch() *Scratch
-}
-
-type scratcher struct {
- s *Scratch
-}
-
-func (s scratcher) Scratch() *Scratch {
- return s.s
-}
-
-// NewScratcher creates a new Scratcher.
-func NewScratcher() Scratcher {
- return scratcher{s: NewScratch()}
-}
-
// Add will, for single values, add (using the + operator) the addend to the existing addend (if found).
// Supports numeric values and strings.
//
diff --git a/hugolib/page.go b/hugolib/page.go
index 2bc1da044..e4c841966 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -38,7 +38,6 @@ import (
"github.com/gohugoio/hugo/tpl"
"github.com/gohugoio/hugo/common/herrors"
- "github.com/gohugoio/hugo/common/maps"
"github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/source"
@@ -149,7 +148,7 @@ func (p *pageState) Key() string {
}
func (p *pageState) resetBuildState() {
- p.Scratcher = maps.NewScratcher()
+ // Nothing to do for now.
}
func (p *pageState) reusePageOutputContent() bool {
diff --git a/hugolib/page__common.go b/hugolib/page__common.go
index d3b0bd112..55465e214 100644
--- a/hugolib/page__common.go
+++ b/hugolib/page__common.go
@@ -56,7 +56,6 @@ type pageCommon struct {
store *maps.Scratch
// All of these represents the common parts of a page.Page
- maps.Scratcher
navigation.PageMenusProvider
page.AuthorProvider
page.AlternativeOutputFormatsProvider
@@ -113,3 +112,8 @@ type pageCommon struct {
func (p *pageCommon) Store() *maps.Scratch {
return p.store
}
+
+// See issue 13016.
+func (p *pageCommon) Scratch() *maps.Scratch {
+ return p.Store()
+}
diff --git a/hugolib/page__new.go b/hugolib/page__new.go
index 9a4972d07..9a11fa889 100644
--- a/hugolib/page__new.go
+++ b/hugolib/page__new.go
@@ -184,7 +184,6 @@ func (h *HugoSites) doNewPage(m *pageMeta) (*pageState, *paths.Path, error) {
pageCommon: &pageCommon{
FileProvider: m,
AuthorProvider: m,
- Scratcher: maps.NewScratcher(),
store: maps.NewScratch(),
Positioner: page.NopPage,
InSectionPositioner: page.NopPage,
diff --git a/hugolib/page_test.go b/hugolib/page_test.go
index 429ab2659..bdd1be6f7 100644
--- a/hugolib/page_test.go
+++ b/hugolib/page_test.go
@@ -1688,6 +1688,32 @@ title: Scratch Me!
b.AssertFileContent("public/scratchme/index.html", "C: cv")
}
+// Issue 13016.
+func TestScratchAliasToStore(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+disableKinds = ["taxonomy", "term", "page", "section"]
+disableLiveReload = true
+-- layouts/index.html --
+{{ .Scratch.Set "a" "b" }}
+{{ .Store.Set "c" "d" }}
+.Scratch eq .Store: {{ eq .Scratch .Store }}
+a: {{ .Store.Get "a" }}
+c: {{ .Scratch.Get "c" }}
+
+`
+
+ b := Test(t, files)
+
+ b.AssertFileContent("public/index.html",
+ ".Scratch eq .Store: true",
+ "a: b",
+ "c: d",
+ )
+}
+
func TestPageParam(t *testing.T) {
t.Parallel()
diff --git a/resources/page/page.go b/resources/page/page.go
index 20525669c..ea7f4bf1b 100644
--- a/resources/page/page.go
+++ b/resources/page/page.go
@@ -327,7 +327,9 @@ type PageWithoutContent interface {
// Scratch returns a Scratch that can be used to store temporary state.
// Note that this Scratch gets reset on server rebuilds. See Store() for a variant that survives.
- maps.Scratcher
+ // Scratch returns a "scratch pad" that can be used to store state.
+ // Deprecated: From Hugo v0.138.0 this is just an alias for Store.
+ Scratch() *maps.Scratch
// Store returns a Scratch that can be used to store temporary state.
// In contrast to Scratch(), this Scratch is not reset on server rebuilds.