shithub: hugo

Download patch

ref: 94e736c5e167a0ee70a528e1c19d64a47e7929c2
parent: 1707dae8d3634006017eb6d040df4dbafc53d92f
author: Bjørn Erik Pedersen <[email protected]>
date: Tue Jan 30 05:33:57 EST 2018

hugolib: Extract the Fast Render Mode logic into a method

This also improves on the previous commit as it takes pages without content files into account.

Closes #4339

--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -325,6 +325,26 @@
 	RecentlyVisited map[string]bool
 }
 
+// shouldRender is used in the Fast Render Mode to determine if we need to re-render
+// 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.
+func (cfg *BuildCfg) shouldRender(p *Page) bool {
+	if len(cfg.RecentlyVisited) == 0 {
+		return true
+	}
+
+	if cfg.RecentlyVisited[p.RelPermalink()] {
+		return true
+	}
+
+	if cfg.whatChanged != nil && p.File != nil && cfg.whatChanged.files[p.File.Filename()] {
+		return true
+	}
+
+	return false
+}
+
 func (h *HugoSites) renderCrossSitesArtifacts() error {
 
 	if !h.multilingual.enabled() || h.IsMultihost() {
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -941,7 +941,7 @@
 
 	}
 
-	if err = s.renderPages(config.RecentlyVisited, config.whatChanged.files); err != nil {
+	if err = s.renderPages(config); err != nil {
 		return
 	}
 
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -24,7 +24,7 @@
 
 // renderPages renders pages each corresponding to a markdown file.
 // TODO(bep np doc
-func (s *Site) renderPages(filter map[string]bool, files map[string]bool) error {
+func (s *Site) renderPages(cfg *BuildCfg) error {
 
 	results := make(chan error)
 	pages := make(chan *Page)
@@ -47,13 +47,10 @@
 
 	}
 
-	hasFilter := filter != nil && len(filter) > 0
-
 	for _, page := range s.Pages {
-		if hasFilter && !filter[page.RelPermalink()] && !files[page.Source.Filename()] {
-			continue
+		if cfg.shouldRender(page) {
+			pages <- page
 		}
-		pages <- page
 	}
 
 	close(pages)