shithub: hugo

Download patch

ref: f0f49ed9b0c9b4545a45c95d56340fcbf4aafbef
parent: 71ae9b4533083be185c5314c9c5b273cc3bd07bd
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Aug 16 05:59:42 EDT 2017

hugolib: Add Page.Equals

--- a/hugolib/site_sections.go
+++ b/hugolib/site_sections.go
@@ -109,6 +109,18 @@
 	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) {
 	if po, ok := in.(*PageOutput); ok {
 		in = po.Page
--- a/hugolib/site_sections_test.go
+++ b/hugolib/site_sections_test.go
@@ -149,6 +149,16 @@
 			d := p.s.getPage(KindSection, "empty2", "b", "c", "d")
 			assert.NotNil(d)
 			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) {
 			// b,c,d with regular page in b