1
0
mirror of https://github.com/danog/gojekyll.git synced 2024-12-02 16:57:51 +01:00
gojekyll/site/render.go

65 lines
1.2 KiB
Go
Raw Normal View History

package site
2017-08-10 17:35:31 +02:00
import (
"sort"
"github.com/osteele/gojekyll/collection"
)
// Render renders the site's pages.
func (s *Site) Render() error {
2017-08-10 17:35:31 +02:00
cols := make([]*collection.Collection, 0, len(s.Collections))
copy(cols, s.Collections)
sort.Sort(postsCollectionLast(cols))
for _, c := range cols {
if err := c.Render(); err != nil {
return err
}
}
2017-08-10 17:45:46 +02:00
for _, c := range s.nonCollectionPages {
if err := c.Render(); err != nil {
return err
}
}
return nil
}
func (s *Site) ensureRendered() (err error) {
s.renderOnce.Do(func() {
err = s.initializeRenderingPipeline()
if err != nil {
return
}
err = s.Render()
if err != nil {
return
}
})
return
}
2017-08-10 17:35:31 +02:00
type postsCollectionLast []*collection.Collection
func (d postsCollectionLast) Len() int {
return len([]*collection.Collection(d))
}
func (d postsCollectionLast) Less(i, j int) bool {
array := []*collection.Collection(d)
a, b := array[i], array[j]
switch {
case a.IsPostsCollection():
return false
case b.IsPostsCollection():
return true
default:
return a.Name < b.Name
}
}
func (d postsCollectionLast) Swap(i, j int) {
array := []*collection.Collection(d)
a, b := array[i], array[j]
array[i], array[j] = b, a
}