diff options
author | spf13 <[email protected]> | 2013-10-31 09:49:29 -0400 |
---|---|---|
committer | spf13 <[email protected]> | 2013-10-31 09:49:29 -0400 |
commit | a7dae30a8f9373d8536c2e7a3e8bdaa79735719c (patch) | |
tree | 2348a0c867b52c8734e0b3803d4c2c8d60129d25 /hugolib | |
parent | bc7c9221f350215aabbd0ccfa83dcf10564a3a53 (diff) | |
download | hugo-a7dae30a8f9373d8536c2e7a3e8bdaa79735719c.tar.gz hugo-a7dae30a8f9373d8536c2e7a3e8bdaa79735719c.zip |
More work on indexes
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/index.go | 25 | ||||
-rw-r--r-- | hugolib/site.go | 3 |
2 files changed, 20 insertions, 8 deletions
diff --git a/hugolib/index.go b/hugolib/index.go index 028f64a70..c3396b286 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 dc4214f2b..eda44fb1c 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 { |