diff zs.go @ 31:b2f491299cee draft

dead end with template functions
author zaitsev.serge
date Wed, 02 Sep 2015 14:54:16 +0000
parents 526ba3c717ba
children 75822e38c3e0
line wrap: on
line diff
--- a/zs.go	Sun Aug 30 21:16:51 2015 +0000
+++ b/zs.go	Wed Sep 02 14:54:16 2015 +0000
@@ -67,24 +67,7 @@
 
 // Use standard Go templates
 func render(s string, funcs Funcs, vars Vars) (string, error) {
-	f := Funcs{}
-	for k, v := range funcs {
-		f[k] = v
-	}
-	for k, v := range vars {
-		f[k] = varFunc(v)
-	}
-	// Plugin functions
-	files, _ := ioutil.ReadDir(ZSDIR)
-	for _, file := range files {
-		if !file.IsDir() {
-			name := file.Name()
-			if !strings.HasSuffix(name, ".html") && !strings.HasSuffix(name, ".amber") {
-				f[strings.TrimSuffix(name, filepath.Ext(name))] = pluginFunc(name, vars)
-			}
-		}
-	}
-
+	f := makeFuncs(funcs, vars)
 	tmpl, err := template.New("").Funcs(template.FuncMap(f)).Parse(s)
 	if err != nil {
 		return "", err
@@ -106,7 +89,7 @@
 	if err != nil {
 		return err
 	}
-	v["content"] = string(blackfriday.MarkdownBasic([]byte(content)))
+	v["content"] = string(blackfriday.MarkdownCommon([]byte(content)))
 	if w == nil {
 		out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html")))
 		if err != nil {
@@ -156,7 +139,7 @@
 	for k, v := range vars {
 		data[k] = v
 	}
-	for k, v := range funcs {
+	for k, v := range makeFuncs(funcs, Vars{}) {
 		data[k] = v
 	}
 
@@ -302,17 +285,23 @@
 	case "watch":
 		buildAll(true)
 	case "var":
-		fmt.Println(Var(args))
+		fmt.Println(Var(args...))
 	case "lorem":
-		fmt.Println(Lorem(args))
+		fmt.Println(Lorem(args...))
 	case "dateparse":
-		fmt.Println(DateParse(args))
+		fmt.Println(DateParse(args...))
 	case "datefmt":
-		fmt.Println(DateFmt(args))
+		fmt.Println(DateFmt(args...))
 	case "wc":
-		fmt.Println(WordCount(args))
-	case "timetoread":
-		fmt.Println(TimeToRead(args))
+		fmt.Println(WordCount(args...))
+	case "ttr":
+		fmt.Println(TimeToRead(args...))
+	case "ls":
+		fmt.Println(strings.Join(List(args...), "\n"))
+	case "sort":
+		fmt.Println(strings.Join(Sort(args...), "\n"))
+	case "exec":
+		// TODO
 	default:
 		err := run(path.Join(ZSDIR, cmd), args, globals(), os.Stdout)
 		if err != nil {