hugolib: Fix changing paginators in lazy render - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b8b8436fcca17c152e94cae2a1acad32efc3946c
 (DIR) parent 42d8dfc8c88af03ea926a59bc2332acc70cca5f6
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Tue,  6 Nov 2018 10:04:37 +0100
       
       hugolib: Fix changing paginators in lazy render
       
       Fixes #5406
       
       Diffstat:
         M hugolib/hugo_sites.go               |      10 ++++++----
         M hugolib/page.go                     |      16 +++++++++++-----
       
       2 files changed, 17 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go
       @@ -416,6 +416,7 @@ type BuildCfg struct {
        // a Page: If it is recently visited (the home pages will always be in this set) or changed.
        // Note that a page does not have to have a content page / file.
        // For regular builds, this will allways return true.
       +// TODO(bep) rename/work this.
        func (cfg *BuildCfg) shouldRender(p *Page) bool {
                if p.forceRender {
                        p.forceRender = false
       @@ -427,6 +428,9 @@ func (cfg *BuildCfg) shouldRender(p *Page) bool {
                }
        
                if cfg.RecentlyVisited[p.RelPermalink()] {
       +                if cfg.PartialReRender {
       +                        _ = p.initMainOutputFormat()
       +                }
                        return true
                }
        
       @@ -644,15 +648,13 @@ func (h *HugoSites) setupTranslations() {
        
        func (s *Site) preparePagesForRender(start bool) error {
                for _, p := range s.Pages {
       -                p.setContentInit(start)
       -                if err := p.initMainOutputFormat(); err != nil {
       +                if err := p.prepareForRender(start); err != nil {
                                return err
                        }
                }
        
                for _, p := range s.headlessPages {
       -                p.setContentInit(start)
       -                if err := p.initMainOutputFormat(); err != nil {
       +                if err := p.prepareForRender(start); err != nil {
                                return err
                        }
                }
 (DIR) diff --git a/hugolib/page.go b/hugolib/page.go
       @@ -304,7 +304,7 @@ func (p *Page) initContent() {
                        go func() {
                                var err error
        
       -                        err = p.prepareForRender()
       +                        err = p.prepareContent()
                                if err != nil {
                                        c <- err
                                        return
       @@ -1142,11 +1142,17 @@ func (p *Page) subResourceTargetPathFactory(base string) string {
                return path.Join(p.relTargetPathBase, base)
        }
        
       -func (p *Page) initMainOutputFormat() error {
       -        if p.mainPageOutput != nil {
       -                return nil
       +// Prepare this page for rendering for a new site. The flag start is set
       +// for the first site and output format.
       +func (p *Page) prepareForRender(start bool) error {
       +        p.setContentInit(start)
       +        if start {
       +                return p.initMainOutputFormat()
                }
       +        return nil
       +}
        
       +func (p *Page) initMainOutputFormat() error {
                outFormat := p.outputFormats[0]
                pageOutput, err := newPageOutput(p, false, false, outFormat)
        
       @@ -1193,7 +1199,7 @@ func (p *Page) setContentInit(start bool) error {
        
        }
        
       -func (p *Page) prepareForRender() error {
       +func (p *Page) prepareContent() error {
                s := p.s
        
                // If we got this far it means that this is either a new Page pointer