summaryrefslogtreecommitdiffstats
path: root/resources/page/pages.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-04-02 10:52:43 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-04-02 16:10:13 +0200
commite91e222cd21213961d1e6206e1523bee2c21fa0c (patch)
tree5e97ed5b92fe54e6ea94bac3caa1cdd24e5631fd /resources/page/pages.go
parent5185fb065b0f8a4142c29ee3e3cd917e917280a4 (diff)
resources/page: Implement compare.ProbablyEqer for the core slices
Fixes #5808
Diffstat (limited to 'resources/page/pages.go')
-rw-r--r--resources/page/pages.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/resources/page/pages.go b/resources/page/pages.go
index 1f79932a9..ccfecdf2b 100644
--- a/resources/page/pages.go
+++ b/resources/page/pages.go
@@ -17,11 +17,14 @@ import (
"fmt"
"math/rand"
+ "github.com/gohugoio/hugo/compare"
+
"github.com/gohugoio/hugo/resources/resource"
)
var (
_ resource.ResourcesConverter = Pages{}
+ _ compare.ProbablyEqer = Pages{}
)
// Pages is a slice of pages. This is the most common list type in Hugo.
@@ -95,6 +98,33 @@ func (p Pages) Len() int {
return len(p)
}
+// ProbablyEq wraps comare.ProbablyEqer
+func (pages Pages) ProbablyEq(other interface{}) bool {
+ otherPages, ok := other.(Pages)
+ if !ok {
+ return false
+ }
+
+ if len(pages) != len(otherPages) {
+ return false
+ }
+
+ step := 1
+
+ for i := 0; i < len(pages); i += step {
+ if !pages[i].Eq(otherPages[i]) {
+ return false
+ }
+
+ if i > 50 {
+ // This is most likely the same.
+ step = 50
+ }
+ }
+
+ return true
+}
+
func (ps Pages) removeFirstIfFound(p Page) Pages {
ii := -1
for i, pp := range ps {