diff options
-rw-r--r-- | common/maps/scratch.go | 19 | ||||
-rw-r--r-- | hugolib/page.go | 3 | ||||
-rw-r--r-- | hugolib/page__common.go | 6 | ||||
-rw-r--r-- | hugolib/page__new.go | 1 | ||||
-rw-r--r-- | hugolib/page_test.go | 26 | ||||
-rw-r--r-- | resources/page/page.go | 4 |
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. |