Mercurial > yakumo_izuru > aya
comparison 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 |
comparison
equal
deleted
inserted
replaced
30:526ba3c717ba | 31:b2f491299cee |
---|---|
65 return v, body, nil | 65 return v, body, nil |
66 } | 66 } |
67 | 67 |
68 // Use standard Go templates | 68 // Use standard Go templates |
69 func render(s string, funcs Funcs, vars Vars) (string, error) { | 69 func render(s string, funcs Funcs, vars Vars) (string, error) { |
70 f := Funcs{} | 70 f := makeFuncs(funcs, vars) |
71 for k, v := range funcs { | |
72 f[k] = v | |
73 } | |
74 for k, v := range vars { | |
75 f[k] = varFunc(v) | |
76 } | |
77 // Plugin functions | |
78 files, _ := ioutil.ReadDir(ZSDIR) | |
79 for _, file := range files { | |
80 if !file.IsDir() { | |
81 name := file.Name() | |
82 if !strings.HasSuffix(name, ".html") && !strings.HasSuffix(name, ".amber") { | |
83 f[strings.TrimSuffix(name, filepath.Ext(name))] = pluginFunc(name, vars) | |
84 } | |
85 } | |
86 } | |
87 | |
88 tmpl, err := template.New("").Funcs(template.FuncMap(f)).Parse(s) | 71 tmpl, err := template.New("").Funcs(template.FuncMap(f)).Parse(s) |
89 if err != nil { | 72 if err != nil { |
90 return "", err | 73 return "", err |
91 } | 74 } |
92 out := &bytes.Buffer{} | 75 out := &bytes.Buffer{} |
104 } | 87 } |
105 content, err := render(body, funcs, v) | 88 content, err := render(body, funcs, v) |
106 if err != nil { | 89 if err != nil { |
107 return err | 90 return err |
108 } | 91 } |
109 v["content"] = string(blackfriday.MarkdownBasic([]byte(content))) | 92 v["content"] = string(blackfriday.MarkdownCommon([]byte(content))) |
110 if w == nil { | 93 if w == nil { |
111 out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html"))) | 94 out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html"))) |
112 if err != nil { | 95 if err != nil { |
113 return err | 96 return err |
114 } | 97 } |
154 | 137 |
155 data := map[string]interface{}{} | 138 data := map[string]interface{}{} |
156 for k, v := range vars { | 139 for k, v := range vars { |
157 data[k] = v | 140 data[k] = v |
158 } | 141 } |
159 for k, v := range funcs { | 142 for k, v := range makeFuncs(funcs, Vars{}) { |
160 data[k] = v | 143 data[k] = v |
161 } | 144 } |
162 | 145 |
163 t, err := a.Compile() | 146 t, err := a.Compile() |
164 if err != nil { | 147 if err != nil { |
300 fmt.Println("ERROR: too many arguments") | 283 fmt.Println("ERROR: too many arguments") |
301 } | 284 } |
302 case "watch": | 285 case "watch": |
303 buildAll(true) | 286 buildAll(true) |
304 case "var": | 287 case "var": |
305 fmt.Println(Var(args)) | 288 fmt.Println(Var(args...)) |
306 case "lorem": | 289 case "lorem": |
307 fmt.Println(Lorem(args)) | 290 fmt.Println(Lorem(args...)) |
308 case "dateparse": | 291 case "dateparse": |
309 fmt.Println(DateParse(args)) | 292 fmt.Println(DateParse(args...)) |
310 case "datefmt": | 293 case "datefmt": |
311 fmt.Println(DateFmt(args)) | 294 fmt.Println(DateFmt(args...)) |
312 case "wc": | 295 case "wc": |
313 fmt.Println(WordCount(args)) | 296 fmt.Println(WordCount(args...)) |
314 case "timetoread": | 297 case "ttr": |
315 fmt.Println(TimeToRead(args)) | 298 fmt.Println(TimeToRead(args...)) |
299 case "ls": | |
300 fmt.Println(strings.Join(List(args...), "\n")) | |
301 case "sort": | |
302 fmt.Println(strings.Join(Sort(args...), "\n")) | |
303 case "exec": | |
304 // TODO | |
316 default: | 305 default: |
317 err := run(path.Join(ZSDIR, cmd), args, globals(), os.Stdout) | 306 err := run(path.Join(ZSDIR, cmd), args, globals(), os.Stdout) |
318 if err != nil { | 307 if err != nil { |
319 log.Println("ERROR:", err) | 308 log.Println("ERROR:", err) |
320 } | 309 } |