hugolib: Add Page.Equals
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 16 Aug 2017 07:59:42 +0000 (09:59 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 16 Aug 2017 07:59:42 +0000 (09:59 +0200)
hugolib/site_sections.go
hugolib/site_sections_test.go

index 4f4a217d59b245611f216f748c88d0c0dc992510..ee982576189cf259a0444c58d7d97a8bfaefd4e7 100644 (file)
@@ -109,6 +109,18 @@ func (p *Page) IsAncestor(other interface{}) (bool, error) {
        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
index 4413911976fe5a6c8700c5cc49449f3aaeee65e8..950900140eacae97d27b7f71ef25a679e099e7db 100644 (file)
@@ -149,6 +149,16 @@ PAG|{{ .Title }}|{{ $sect.InSection . }}
                        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