Mercurial > yakumo_izuru > aya
comparison zs_util.go @ 31:b2f491299cee draft
dead end with template functions
author | zaitsev.serge |
---|---|
date | Wed, 02 Sep 2015 14:54:16 +0000 |
parents | d052f3a44195 |
children |
comparison
equal
deleted
inserted
replaced
30:526ba3c717ba | 31:b2f491299cee |
---|---|
1 package main | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "io" | 5 "io" |
6 "io/ioutil" | |
6 "log" | 7 "log" |
7 "os" | 8 "os" |
8 "os/exec" | 9 "os/exec" |
9 "path/filepath" | 10 "path/filepath" |
10 "strings" | 11 "strings" |
11 ) | 12 ) |
13 | |
14 func makeFuncs(funcs Funcs, vars Vars) Funcs { | |
15 f := Funcs{} | |
16 for k, v := range funcs { | |
17 f[k] = v | |
18 } | |
19 for k, v := range vars { | |
20 f[k] = varFunc(v) | |
21 } | |
22 // Plugin functions | |
23 files, _ := ioutil.ReadDir(ZSDIR) | |
24 for _, file := range files { | |
25 if !file.IsDir() { | |
26 name := file.Name() | |
27 if !strings.HasSuffix(name, ".html") && !strings.HasSuffix(name, ".amber") { | |
28 f[renameExt(name, "", "")] = pluginFunc(name, vars) | |
29 } else { | |
30 f[renameExt(name, "", "")] = partialFunc(name, f, vars) | |
31 } | |
32 } | |
33 } | |
34 return f | |
35 } | |
12 | 36 |
13 func varFunc(s string) func() string { | 37 func varFunc(s string) func() string { |
14 return func() string { | 38 return func() string { |
15 return s | 39 return s |
16 } | 40 } |
25 return string(out.Bytes()) | 49 return string(out.Bytes()) |
26 } | 50 } |
27 } | 51 } |
28 } | 52 } |
29 | 53 |
54 func partialFunc(name string, funcs Funcs, vars Vars) func() string { | |
55 return func() string { | |
56 var err error | |
57 w := bytes.NewBuffer(nil) | |
58 if strings.HasSuffix(name, ".amber") { | |
59 err = buildAmber(filepath.Join(ZSDIR, name), w, funcs, vars) | |
60 } else { | |
61 err = buildHTML(filepath.Join(ZSDIR, name), w, funcs, vars) | |
62 } | |
63 if err != nil { | |
64 return name + ":" + err.Error() | |
65 } | |
66 return string(w.Bytes()) | |
67 } | |
68 } | |
69 | |
30 func builtins() Funcs { | 70 func builtins() Funcs { |
31 exec := func(cmd string, args ...string) string { | 71 exec := func(cmd string, args ...string) string { |
32 out := bytes.NewBuffer(nil) | 72 out := bytes.NewBuffer(nil) |
33 if err := run(cmd, args, Vars{}, out); err != nil { | 73 if err := run(cmd, args, Vars{}, out); err != nil { |
34 return cmd + ":" + err.Error() | 74 return cmd + ":" + err.Error() |
36 return string(out.Bytes()) | 76 return string(out.Bytes()) |
37 } | 77 } |
38 return "" | 78 return "" |
39 } | 79 } |
40 return Funcs{ | 80 return Funcs{ |
41 "exec": exec, | 81 "exec": exec, |
42 "zs": func(args ...string) string { | 82 "var": Var, |
43 return exec(os.Args[0], args...) | 83 "lorem": Lorem, |
84 "dateparse": DateParse, | |
85 "datefmt": DateFmt, | |
86 "wc": WordCount, | |
87 "ttr": TimeToRead, | |
88 "ls": List, | |
89 "...": func(args ...string) []string { | |
90 return append([]string{"..."}, args...) | |
91 }, | |
92 "sort": func(args ...string) []string { | |
93 | |
94 return Sort(args...) | |
44 }, | 95 }, |
45 } | 96 } |
46 } | 97 } |
47 | 98 |
48 func renameExt(path, from, to string) string { | 99 func renameExt(path, from, to string) string { |