mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-25 04:52:31 +00:00
Merge branch 'noahcampbell-index_reporting'
This commit is contained in:
commit
8f330626bc
2 changed files with 53 additions and 15 deletions
16
hugolib/indexing_test.go
Normal file
16
hugolib/indexing_test.go
Normal file
|
@ -0,0 +1,16 @@
|
|||
package hugolib
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSitePossibleIndexes(t *testing.T) {
|
||||
site := new(Site)
|
||||
page, _ := ReadFrom(strings.NewReader(PAGE_YAML_WITH_INDEXES_A), "path/to/page")
|
||||
site.Pages = append(site.Pages, page)
|
||||
indexes := site.possibleIndexes()
|
||||
if !compareStringSlice(indexes, []string{"tags", "categories"}) {
|
||||
t.Fatalf("possible indexes do not match [tags categories]. Got: %s", indexes)
|
||||
}
|
||||
}
|
|
@ -28,8 +28,6 @@ import (
|
|||
//"sync"
|
||||
)
|
||||
|
||||
const slash = string(os.PathSeparator)
|
||||
|
||||
var DefaultTimer = nitro.Initalize()
|
||||
|
||||
type Site struct {
|
||||
|
@ -110,9 +108,13 @@ func (site *Site) Render() (err error) {
|
|||
if err = site.RenderIndexes(); err != nil {
|
||||
return
|
||||
}
|
||||
site.RenderIndexesIndexes()
|
||||
if err = site.RenderIndexesIndexes(); err != nil {
|
||||
return
|
||||
}
|
||||
site.timerStep("render and write indexes")
|
||||
site.RenderLists()
|
||||
if err = site.RenderLists(); err != nil {
|
||||
return
|
||||
}
|
||||
site.timerStep("render and write lists")
|
||||
if err = site.RenderPages(); err != nil {
|
||||
return
|
||||
|
@ -324,9 +326,9 @@ func (s *Site) setOutFile(p *Page) {
|
|||
if len(strings.TrimSpace(p.Slug)) > 0 {
|
||||
// Use Slug if provided
|
||||
if s.Config.UglyUrls {
|
||||
outfile = p.Slug + "." + p.Extension
|
||||
outfile = strings.TrimSpace(p.Slug) + "." + p.Extension
|
||||
} else {
|
||||
outfile = p.Slug + slash + "index." + p.Extension
|
||||
outfile = filepath.Join(strings.TrimSpace(p.Slug), "index."+p.Extension)
|
||||
}
|
||||
} else {
|
||||
// Fall back to filename
|
||||
|
@ -335,7 +337,7 @@ func (s *Site) setOutFile(p *Page) {
|
|||
outfile = replaceExtension(strings.TrimSpace(t), p.Extension)
|
||||
} else {
|
||||
file, _ := fileExt(strings.TrimSpace(t))
|
||||
outfile = file + slash + "index." + p.Extension
|
||||
outfile = filepath.Join(file, "index."+p.Extension)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -386,6 +388,26 @@ func (s *Site) BuildSiteMeta() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (s *Site) possibleIndexes() (indexes []string) {
|
||||
for _, p := range s.Pages {
|
||||
for k, _ := range p.Params {
|
||||
if !inStringArray(indexes, k) {
|
||||
indexes = append(indexes, k)
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func inStringArray(arr []string, el string) bool {
|
||||
for _, v := range arr {
|
||||
if v == el {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *Site) RenderAliases() error {
|
||||
for i, p := range s.Pages {
|
||||
for _, a := range p.Aliases {
|
||||
|
@ -428,7 +450,7 @@ func (s *Site) RenderIndexes() error {
|
|||
for k, o := range s.Indexes[plural] {
|
||||
n := s.NewNode()
|
||||
n.Title = strings.Title(k)
|
||||
url := Urlize(plural + slash + k)
|
||||
url := Urlize(plural + "/" + k)
|
||||
plink := url
|
||||
if s.Config.UglyUrls {
|
||||
n.Url = url + ".html"
|
||||
|
@ -441,7 +463,7 @@ func (s *Site) RenderIndexes() error {
|
|||
n.Date = o[0].Date
|
||||
n.Data[singular] = o
|
||||
n.Data["Pages"] = o
|
||||
layout := "indexes" + slash + singular + ".html"
|
||||
layout := "indexes/" + singular + ".html"
|
||||
x, err := s.RenderThing(n, layout)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -474,7 +496,7 @@ func (s *Site) RenderIndexes() error {
|
|||
}
|
||||
|
||||
func (s *Site) RenderIndexesIndexes() (err error) {
|
||||
layout := "indexes" + slash + "indexes.html"
|
||||
layout := "indexes/indexes.html"
|
||||
if s.Tmpl.Lookup(layout) != nil {
|
||||
for singular, plural := range s.Config.Indexes {
|
||||
n := s.NewNode()
|
||||
|
@ -488,7 +510,7 @@ func (s *Site) RenderIndexesIndexes() (err error) {
|
|||
n.Data["OrderedIndex"] = s.Info.Indexes[plural]
|
||||
|
||||
x, err := s.RenderThing(n, layout)
|
||||
s.WritePublic(plural+slash+"index.html", x.Bytes())
|
||||
s.WritePublic(plural+"/index.html", x.Bytes())
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -504,13 +526,13 @@ func (s *Site) RenderLists() error {
|
|||
n.RSSlink = template.HTML(MakePermalink(string(n.Site.BaseUrl), string(section+".xml")))
|
||||
n.Date = data[0].Date
|
||||
n.Data["Pages"] = data
|
||||
layout := "indexes" + slash + section + ".html"
|
||||
layout := "indexes/" + section + ".html"
|
||||
|
||||
x, err := s.RenderThing(n, layout)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.WritePublic(section+slash+"index.html", x.Bytes())
|
||||
s.WritePublic(section+"/index.html", x.Bytes())
|
||||
|
||||
if a := s.Tmpl.Lookup("rss.xml"); a != nil {
|
||||
// XML Feed
|
||||
|
@ -522,7 +544,7 @@ func (s *Site) RenderLists() error {
|
|||
n.Permalink = template.HTML(string(n.Site.BaseUrl) + n.Url)
|
||||
y := s.NewXMLBuffer()
|
||||
s.Tmpl.ExecuteTemplate(y, "rss.xml", n)
|
||||
s.WritePublic(section+slash+"index.xml", y.Bytes())
|
||||
s.WritePublic(section+"/index.xml", y.Bytes())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
@ -563,7 +585,7 @@ func (s *Site) RenderHomePage() error {
|
|||
func (s *Site) Stats() {
|
||||
fmt.Printf("%d pages created \n", len(s.Pages))
|
||||
for _, pl := range s.Config.Indexes {
|
||||
fmt.Printf("%d %s created\n", len(s.Indexes[pl]), pl)
|
||||
fmt.Printf("%d %s index created\n", len(s.Indexes[pl]), pl)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue