Changeset 32 in code for trunk/zs_util.go


Ignore:
Timestamp:
Sep 2, 2015, 2:54:16 PM (10 years ago)
Author:
zaitsev.serge
Message:

dead end with template functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/zs_util.go

    r25 r32  
    44        "bytes"
    55        "io"
     6        "io/ioutil"
    67        "log"
    78        "os"
     
    1011        "strings"
    1112)
     13
     14func 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}
    1236
    1337func varFunc(s string) func() string {
     
    2852}
    2953
     54func 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
    3070func builtins() Funcs {
    3171        exec := func(cmd string, args ...string) string {
     
    3979        }
    4080        return Funcs{
    41                 "exec": exec,
    42                 "zs": func(args ...string) string {
    43                         return exec(os.Args[0], args...)
     81                "exec":      exec,
     82                "var":       Var,
     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...)
    4495                },
    4596        }
Note: See TracChangeset for help on using the changeset viewer.