From a7dae30a8f9373d8536c2e7a3e8bdaa79735719c Mon Sep 17 00:00:00 2001
From: spf13 <steve.francia@gmail.com>
Date: Thu, 31 Oct 2013 09:49:29 -0400
Subject: [PATCH] More work on indexes

---
 hugolib/index.go | 25 ++++++++++++++++++-------
 hugolib/site.go  |  3 ++-
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/hugolib/index.go b/hugolib/index.go
index 028f64a7..c3396b28 100644
--- a/hugolib/index.go
+++ b/hugolib/index.go
@@ -28,6 +28,7 @@ type IndexedPages []WeightedIndexEntry
 func (p IndexedPages) Len() int      { return len(p) }
 func (p IndexedPages) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
 func (p IndexedPages) Sort()         { sort.Sort(p) }
+func (p IndexedPages) Count() int    { return len(p) }
 func (p IndexedPages) Less(i, j int) bool {
 	if p[i].Weight == p[j].Weight {
 		return p[i].Page.Date.Unix() > p[j].Page.Date.Unix()
@@ -59,17 +60,17 @@ func (i Index) Add(key string, w WeightedIndexEntry) {
 	i[key] = append(i[key], w)
 }
 
-func (i Index) IndexArray() []IndexEntry {
+func (i Index) IndexArray() IndexEntries {
 	ies := make([]IndexEntry, len(i))
 	count := 0
 	for k, v := range i {
-		ies[count] = IndexEntry{Name: k, Pages: v}
+		ies[count] = IndexEntry{Name: k, WeightedPages: v}
 		count++
 	}
 	return ies
 }
 
-func (i Index) Alphabetical() []IndexEntry {
+func (i Index) Alphabetical() IndexEntries {
 	name := func(i1, i2 *IndexEntry) bool {
 		return i1.Name < i2.Name
 	}
@@ -79,9 +80,9 @@ func (i Index) Alphabetical() []IndexEntry {
 	return ia
 }
 
-func (i Index) ByCount() []IndexEntry {
+func (i Index) ByCount() IndexEntries {
 	count := func(i1, i2 *IndexEntry) bool {
-		return len(i1.Pages) < len(i2.Pages)
+		return len(i1.WeightedPages) > len(i2.WeightedPages)
 	}
 
 	ia := i.IndexArray()
@@ -90,10 +91,20 @@ func (i Index) ByCount() []IndexEntry {
 }
 
 type IndexEntry struct {
-	Name  string
-	Pages IndexedPages
+	Name          string
+	WeightedPages IndexedPages
 }
 
+func (ie IndexEntry) Pages() []*Page {
+	return ie.WeightedPages.Pages()
+}
+
+func (ie IndexEntry) Count() int {
+	return len(ie.WeightedPages)
+}
+
+type IndexEntries []IndexEntry
+
 type By func(i1, i2 *IndexEntry) bool
 
 func (by By) Sort(indexEntrys []IndexEntry) {
diff --git a/hugolib/site.go b/hugolib/site.go
index dc4214f2..eda44fb1 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -452,7 +452,8 @@ func (s *Site) RenderIndexesIndexes() (err error) {
 			n.Data["Singular"] = singular
 			n.Data["Plural"] = plural
 			n.Data["Index"] = s.Indexes[plural]
-			n.Data["OrderedIndex"] = s.Info.Indexes[plural]
+			// keep the following just for legacy reasons
+			n.Data["OrderedIndex"] = s.Indexes[plural]
 
 			err := s.render(n, plural+"/index.html", layout)
 			if err != nil {
-- 
2.30.2