Skip to content

Commit

Permalink
Alias Page.Scratch to Page.Store (note)
Browse files Browse the repository at this point in the history
Fixes #13016
  • Loading branch information
bep committed Nov 6, 2024
1 parent df8bd4a commit 2c3efc8
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 24 deletions.
19 changes: 0 additions & 19 deletions common/maps/scratch.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
//
Expand Down
3 changes: 1 addition & 2 deletions hugolib/page.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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 {
Expand Down
6 changes: 5 additions & 1 deletion hugolib/page__common.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
}
1 change: 0 additions & 1 deletion hugolib/page__new.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
26 changes: 26 additions & 0 deletions hugolib/page_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down
4 changes: 3 additions & 1 deletion resources/page/page.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 2c3efc8

Please sign in to comment.