changeset 39:806ca2102d6b draft

more obvious rules of variable overriding
author zaitsev.serge
date Fri, 04 Sep 2015 12:49:56 +0000
parents ea1bcd29a195
children dc090188ecf3
files zs.go
diffstat 1 files changed, 13 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/zs.go	Wed Sep 02 21:21:50 2015 +0000
+++ b/zs.go	Fri Sep 04 12:49:56 2015 +0000
@@ -104,21 +104,23 @@
 	title := strings.Replace(strings.Replace(path, "_", " ", -1), "-", " ", -1)
 	v["title"] = strings.ToTitle(title)
 	v["description"] = ""
+	v["file"] = path
+	v["url"] = path[:len(path)-len(filepath.Ext(path))] + ".html"
+	v["output"] = filepath.Join(PUBDIR, v["url"])
 
-	// Copy globals (will override title and description for markdown layouts
+	// Override default values with globals
 	for name, value := range globals {
 		v[name] = value
 	}
 
-	// Add default values extracted from file name/path
-	if _, err := os.Stat(filepath.Join(ZSDIR, "layout.amber")); err == nil {
-		v["layout"] = "layout.amber"
-	} else {
-		v["layout"] = "layout.html"
+	// Add layout if none is specified
+	if _, ok := v["layout"]; !ok {
+		if _, err := os.Stat(filepath.Join(ZSDIR, "layout.amber")); err == nil {
+			v["layout"] = "layout.amber"
+		} else {
+			v["layout"] = "layout.html"
+		}
 	}
-	v["file"] = path
-	v["url"] = path[:len(path)-len(filepath.Ext(path))] + ".html"
-	v["output"] = filepath.Join(PUBDIR, v["url"])
 
 	delim := "\n---\n"
 	if sep := strings.Index(s, delim); sep == -1 {
@@ -132,6 +134,7 @@
 			fmt.Println("ERROR: failed to parse header", err)
 			return nil, "", err
 		} else {
+			// Override default values + globals with the ones defines in the file
 			for key, value := range vars {
 				v[key] = value
 			}
@@ -398,7 +401,7 @@
 			fmt.Println("var: filename expected")
 		} else {
 			s := ""
-			if vars, _, err := getVars(args[0], globals()); err != nil {
+			if vars, _, err := getVars(args[0], Vars{}); err != nil {
 				fmt.Println("var: " + err.Error())
 			} else {
 				if len(args) > 1 {