mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
hugolib: Add Page.Equals
This commit is contained in:
parent
71ae9b4533
commit
f0f49ed9b0
2 changed files with 22 additions and 0 deletions
|
@ -109,6 +109,18 @@ func (p *Page) IsAncestor(other interface{}) (bool, error) {
|
||||||
return helpers.HasStringsPrefix(pp.sections, p.sections), nil
|
return helpers.HasStringsPrefix(pp.sections, p.sections), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Equals returns whether the current page equals the given page.
|
||||||
|
// Note that this is more accurate than doing `{{ if eq $page $otherPage }}`
|
||||||
|
// since a Page can be embedded in another type.
|
||||||
|
func (p *Page) Equals(other interface{}) (bool, error) {
|
||||||
|
pp, err := unwrapPage(other)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p == pp, nil
|
||||||
|
}
|
||||||
|
|
||||||
func unwrapPage(in interface{}) (*Page, error) {
|
func unwrapPage(in interface{}) (*Page, error) {
|
||||||
if po, ok := in.(*PageOutput); ok {
|
if po, ok := in.(*PageOutput); ok {
|
||||||
in = po.Page
|
in = po.Page
|
||||||
|
|
|
@ -149,6 +149,16 @@ PAG|{{ .Title }}|{{ $sect.InSection . }}
|
||||||
d := p.s.getPage(KindSection, "empty2", "b", "c", "d")
|
d := p.s.getPage(KindSection, "empty2", "b", "c", "d")
|
||||||
assert.NotNil(d)
|
assert.NotNil(d)
|
||||||
assert.Equal("T41_-1", d.Title)
|
assert.Equal("T41_-1", d.Title)
|
||||||
|
|
||||||
|
equals, err := c.Equals(d)
|
||||||
|
assert.NoError(err)
|
||||||
|
assert.False(equals)
|
||||||
|
equals, err = c.Equals(c)
|
||||||
|
assert.NoError(err)
|
||||||
|
assert.True(equals)
|
||||||
|
_, err = c.Equals("asdf")
|
||||||
|
assert.Error(err)
|
||||||
|
|
||||||
}},
|
}},
|
||||||
{"empty3", func(p *Page) {
|
{"empty3", func(p *Page) {
|
||||||
// b,c,d with regular page in b
|
// b,c,d with regular page in b
|
||||||
|
|
Loading…
Reference in a new issue