From bf05832d14f9916c8c8268b20fc0fa40f61c9f9f Mon Sep 17 00:00:00 2001 From: Shiwang0-0 Date: Wed, 19 Aug 2026 17:25:25 +0530 Subject: [PATCH] page: Add IndexOf method to Pages See #13589 --- resources/page/pages.go | 5 +++++ resources/page/pages_test.go | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/resources/page/pages.go b/resources/page/pages.go index 088abb9ac..fdbdacf15 100644 --- a/resources/page/pages.go +++ b/resources/page/pages.go @@ -130,6 +130,11 @@ func (pages Pages) ProbablyEq(other any) bool { return true } +// IndexOf returns the index of page in p, or -1 if not found. +func (p Pages) IndexOf(page Page) int { + return searchPage(page, p) +} + // PagesFactory somehow creates some Pages. // We do a lot of lazy Pages initialization in Hugo, so we need a type. type PagesFactory func() Pages diff --git a/resources/page/pages_test.go b/resources/page/pages_test.go index 22ee698da..f321617f5 100644 --- a/resources/page/pages_test.go +++ b/resources/page/pages_test.go @@ -70,3 +70,15 @@ func TestToPages(t *testing.T) { _, err := ToPages("not a page") c.Assert(err, qt.Not(qt.IsNil)) } + +func TestIndexOf(t *testing.T) { + c := qt.New(t) + + p1, p2, p3, p4 := &testPage{title: "p1"}, &testPage{title: "p2"}, &testPage{title: "p3"}, &testPage{title: "p4"} + + pages := Pages{p1, p2, p3} + c.Assert(pages.IndexOf(p1), qt.Equals, 0) + c.Assert(pages.IndexOf(p2), qt.Equals, 1) + c.Assert(pages.IndexOf(p3), qt.Equals, 2) + c.Assert(pages.IndexOf(p4), qt.Equals, -1) +}