changeset 20:f8373c23a3ff draft

replaced amber with my own fork, fixed file paths for amber and html
author zaitsev.serge
date Sat, 29 Aug 2015 21:43:59 +0000
parents 802b96e67bae
children d577cff808bc
files zs.go
diffstat 1 files changed, 29 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/zs.go	Sat Aug 29 17:54:55 2015 +0000
+++ b/zs.go	Sat Aug 29 21:43:59 2015 +0000
@@ -14,9 +14,9 @@
 	"text/template"
 	"time"
 
-	"github.com/eknkc/amber"
 	"github.com/russross/blackfriday"
 	"github.com/yosssi/gcss"
+	"github.com/zserge/amber"
 )
 
 const (
@@ -49,8 +49,13 @@
 		"file":   path,
 		"url":    url,
 		"output": filepath.Join(PUBDIR, url),
-		"layout": "index.html",
 	}
+	if _, err := os.Stat(filepath.Join(ZSDIR, "layout.amber")); err == nil {
+		v["layout"] = "layout.amber"
+	} else {
+		v["layout"] = "layout.html"
+	}
+
 	if info, err := os.Stat(path); err == nil {
 		v["date"] = info.ModTime().Format("02-01-2006")
 	}
@@ -115,7 +120,7 @@
 	err := c.Run()
 
 	if errbuf.Len() > 0 {
-		log.Println(errbuf.String())
+		log.Println("ERROR:", errbuf.String())
 	}
 
 	if err != nil {
@@ -155,15 +160,17 @@
 	}
 	v["content"] = string(blackfriday.MarkdownBasic([]byte(content)))
 	if strings.HasSuffix(v["layout"], ".amber") {
-		return buildAmber(filepath.Join(ZSDIR, v["layout"]), funcs, v)
+		return buildAmber(filepath.Join(ZSDIR, v["layout"]),
+			renameExt(path, "", ".html"), funcs, v)
 	} else {
-		return buildPlain(filepath.Join(ZSDIR, v["layout"]), funcs, v)
+		return buildPlain(filepath.Join(ZSDIR, v["layout"]),
+			renameExt(path, "", ".html"), funcs, v)
 	}
 }
 
 // Renders text file expanding all variable macros inside it
-func buildPlain(path string, funcs template.FuncMap, vars Vars) error {
-	b, err := ioutil.ReadFile(path)
+func buildPlain(in, out string, funcs template.FuncMap, vars Vars) error {
+	b, err := ioutil.ReadFile(in)
 	if err != nil {
 		return err
 	}
@@ -171,7 +178,7 @@
 	if err != nil {
 		return err
 	}
-	output := filepath.Join(PUBDIR, path)
+	output := filepath.Join(PUBDIR, out)
 	if s, ok := vars["output"]; ok {
 		output = s
 	}
@@ -183,9 +190,9 @@
 }
 
 // Renders .amber file into .html
-func buildAmber(path string, funcs template.FuncMap, vars Vars) error {
+func buildAmber(in, out string, funcs template.FuncMap, vars Vars) error {
 	a := amber.New()
-	err := a.ParseFile(path)
+	err := a.ParseFile(in)
 	if err != nil {
 		return err
 	}
@@ -194,8 +201,7 @@
 		return err
 	}
 	//amber.FuncMap = amber.FuncMap
-	s := strings.TrimSuffix(path, ".amber") + ".html"
-	f, err := os.Create(filepath.Join(PUBDIR, s))
+	f, err := os.Create(filepath.Join(PUBDIR, out))
 	if err != nil {
 		return err
 	}
@@ -272,6 +278,13 @@
 	return funcs
 }
 
+func renameExt(path, from, to string) string {
+	if from == "" {
+		from = filepath.Ext(path)
+	}
+	return strings.TrimSuffix(path, from) + to
+}
+
 func globals() Vars {
 	vars := Vars{}
 	for _, e := range os.Environ() {
@@ -313,10 +326,10 @@
 					return buildMarkdown(path, funcs, vars)
 				} else if ext == ".html" || ext == ".xml" {
 					log.Println("html: ", path)
-					return buildPlain(path, funcs, vars)
+					return buildPlain(path, path, funcs, vars)
 				} else if ext == ".amber" {
 					log.Println("html: ", path)
-					return buildAmber(path, funcs, vars)
+					return buildAmber(path, renameExt(path, ".amber", ".html"), funcs, vars)
 				} else if ext == ".gcss" {
 					log.Println("css: ", path)
 					return buildGCSS(path)
@@ -372,12 +385,12 @@
 				}
 			}
 		} else {
-			log.Println(err)
+			log.Println("ERROR:", err)
 		}
 	default:
 		err := run(path.Join(ZSDIR, cmd), args, Vars{}, os.Stdout)
 		if err != nil {
-			log.Println(err)
+			log.Println("ERROR:", err)
 		}
 	}
 }