changeset 6:cb66f5b86616 draft

rewritted default variables assignment
author zaitsev.serge
date Fri, 05 Dec 2014 18:26:15 +0000
parents e0ee0721d34f
children 11073a30f71f
files zs.go zs_test.go
diffstat 2 files changed, 17 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/zs.go	Fri Dec 05 18:21:42 2014 +0000
+++ b/zs.go	Fri Dec 05 18:26:15 2014 +0000
@@ -32,8 +32,15 @@
 	}
 }
 
-func md(s string) (map[string]string, string) {
-	v := map[string]string{}
+func md(path, s string) (map[string]string, string) {
+	url := path[:len(path)-len(filepath.Ext(path))] + ".html"
+	v := map[string]string{
+		"file":   path,
+		"url":    url,
+		"outdir": PUBDIR,
+		"output": filepath.Join(PUBDIR, url),
+		"layout": "index.html",
+	}
 	if strings.Index(s, "\n\n") == -1 {
 		return map[string]string{}, s
 	}
@@ -42,6 +49,9 @@
 		key, value := split2(line, ":")
 		v[strings.ToLower(strings.TrimSpace(key))] = strings.TrimSpace(value)
 	}
+	if strings.HasPrefix(v["url"], "./") {
+		v["url"] = v["url"][2:]
+	}
 	return v, body
 }
 
@@ -128,8 +138,7 @@
 	if err != nil {
 		return err
 	}
-	v, body := md(string(b))
-	defaultVars(v, path)
+	v, body := md(path, string(b))
 	content, err := render(body, v, eval)
 	if err != nil {
 		return err
@@ -150,27 +159,6 @@
 	return nil
 }
 
-func defaultVars(vars map[string]string, path string) {
-	if _, ok := vars["file"]; !ok {
-		vars["file"] = path
-	}
-	if _, ok := vars["url"]; !ok {
-		vars["url"] = path[:len(path)-len(filepath.Ext(path))] + ".html"
-		if strings.HasPrefix(vars["url"], "./") {
-			vars["url"] = vars["url"][2:]
-		}
-	}
-	if _, ok := vars["outdir"]; !ok {
-		vars["outdir"] = PUBDIR
-	}
-	if _, ok := vars["output"]; !ok {
-		vars["output"] = filepath.Join(PUBDIR, vars["url"])
-	}
-	if _, ok := vars["layout"]; !ok {
-		vars["layout"] = "index.html"
-	}
-}
-
 func copyFile(path string) error {
 	if in, err := os.Open(path); err != nil {
 		return err
@@ -249,8 +237,7 @@
 			return
 		}
 		if b, err := ioutil.ReadFile(args[0]); err == nil {
-			vars, _ := md(string(b))
-			defaultVars(vars, args[0])
+			vars, _ := md(args[0], string(b))
 			if len(args) > 1 {
 				for _, a := range args[1:] {
 					fmt.Println(vars[a])
--- a/zs_test.go	Fri Dec 05 18:21:42 2014 +0000
+++ b/zs_test.go	Fri Dec 05 18:26:15 2014 +0000
@@ -32,7 +32,7 @@
 }
 
 func TestMD(t *testing.T) {
-	v, body := md(`
+	v, body := md("foo.md", `
 	title: Hello, world!
 	keywords: foo, bar, baz
 	empty:
@@ -56,13 +56,13 @@
 	}
 
 	// Test empty md
-	v, body = md("")
+	v, body = md("foo.md", "")
 	if len(v) != 0 || len(body) != 0 {
 		t.Error(v, body)
 	}
 
 	// Test empty header
-	v, body = md("Hello")
+	v, body = md("foo.md", "Hello")
 	if len(v) != 0 || body != "Hello" {
 		t.Error(v, body)
 	}