aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacien2013-09-21 13:35:53 +0200
committerPacien2013-09-21 13:35:53 +0200
commit46a4cbd79d469bdce723fb3d0b0cf2aee35c015f (patch)
tree63ce6126bcdb0aa445f580228a375a68874fb350
parenta20a6a41d13d062fce6b8269ceaca336574a43c4 (diff)
downloadfoldaweb-46a4cbd79d469bdce723fb3d0b0cf2aee35c015f.tar.gz
Fix reference interferences between parts of pagesHEADmaster
-rw-r--r--main.go22
1 files changed, 14 insertions, 8 deletions
diff --git a/main.go b/main.go
index 5beaf27..24206fb 100644
--- a/main.go
+++ b/main.go
@@ -61,6 +61,14 @@ type page struct {
61 61
62type parts map[string][]byte 62type parts map[string][]byte
63 63
64func (p parts) clone() parts {
65 c := parts{}
66 for k, v := range p {
67 c[k] = v
68 }
69 return c
70}
71
64// Creates an initiated generator 72// Creates an initiated generator
65func newGenerator() (g generator) { 73func newGenerator() (g generator) {
66 74
@@ -192,19 +200,17 @@ func (g *generator) generate(page page) {
192 } 200 }
193 201
194 // Generate subpages in surdirectories 202 // Generate subpages in surdirectories
195 currentDirPath := page.dirPath
196 for _, dir := range dirs { 203 for _, dir := range dirs {
197 page.dirPath = path.Join(currentDirPath, dir) 204 subPage := page
205 subPage.dirPath = path.Join(page.dirPath, dir)
206 subPage.parts = page.parts.clone()
198 g.tasks.Add(1) 207 g.tasks.Add(1)
199 go g.generate(page) 208 go g.generate(subPage)
200 page.dirPath = currentDirPath
201 } 209 }
202 210
203 // Generate the page at the current directory 211 // Generate the page at the current directory
204 _, currentDir := path.Split(currentDirPath) 212 if _, currentDir := path.Split(page.dirPath); containsParsableFiles && !strings.HasPrefix(currentDir, g.skipPrefix) {
205 if containsParsableFiles && !strings.HasPrefix(currentDir, g.skipPrefix) { 213 fmt.Println("Rendering: " + page.dirPath)
206 fmt.Println("Rendering: " + currentDirPath)
207
208 page.body = []byte(mustache.Render(string(g.mergeParts(page.parts)), g.contextualize(page))) 214 page.body = []byte(mustache.Render(string(g.mergeParts(page.parts)), g.contextualize(page)))
209 err := fcmd.WriteFile(g.outputPath(path.Join(page.dirPath, g.saveAs)), page.body) 215 err := fcmd.WriteFile(g.outputPath(path.Join(page.dirPath, g.saveAs)), page.body)
210 if err != nil { 216 if err != nil {