dead end with template functions

git-svn-id: file:///srv/svn/repo/aya/trunk@32 cec141ff-132a-4243-88a5-ce187bd62f94
This commit is contained in:
zaitsev.serge
2015-09-02 14:54:16 +00:00
parent 443716fb2a
commit 21269a84d0
3 changed files with 142 additions and 37 deletions

View File

@@ -2,7 +2,10 @@ package main
import (
"bytes"
"log"
"os"
"path/filepath"
"sort"
"strconv"
"strings"
"time"
@@ -15,7 +18,7 @@ import (
// zs var <filename> -- returns list of variables and their values
// zs var <filename> <var...> -- returns list of variable values
func Var(args []string) string {
func Var(args ...string) string {
if len(args) == 0 {
return "var: filename expected"
} else {
@@ -38,7 +41,7 @@ func Var(args []string) string {
}
// zs lorem <n> -- returns <n> random lorem ipsum sentences
func Lorem(args []string) string {
func Lorem(args ...string) string {
if len(args) > 1 {
return "lorem: invalid usage"
}
@@ -53,7 +56,7 @@ func Lorem(args []string) string {
}
// zs datefmt <fmt> <date> -- returns formatted date from unix time
func DateFmt(args []string) string {
func DateFmt(args ...string) string {
if len(args) == 0 || len(args) > 2 {
return "datefmt: invalid usage"
}
@@ -65,7 +68,7 @@ func DateFmt(args []string) string {
}
// zs dateparse <fmt> <date> -- returns unix time from the formatted date
func DateParse(args []string) string {
func DateParse(args ...string) string {
if len(args) == 0 || len(args) > 2 {
return "dateparse: invalid usage"
}
@@ -77,7 +80,7 @@ func DateParse(args []string) string {
}
// zs wc <file> -- returns word count in the file (markdown, html or amber)
func WordCount(args []string) int {
func WordCount(args ...string) int {
if os.Getenv("ZS_RECURSION") != "" {
return 0
}
@@ -97,7 +100,69 @@ func WordCount(args []string) int {
}
// zs timetoread <file> -- returns number of minutes required to read the text
func TimeToRead(args []string) int {
wc := WordCount(args)
func TimeToRead(args ...string) int {
wc := WordCount(args...)
return int(math.Floor(float64(wc)/200.0 + .5))
}
// zs ls <dir> <regexp>
func List(args ...string) []string {
if len(args) != 2 {
return []string{}
}
dir := args[0]
mask := args[1]
res := []string{}
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return nil
}
if !info.IsDir() {
if ok, err := filepath.Match(mask, info.Name()); ok && err == nil {
res = append(res, path)
}
}
return nil
})
return res
}
// zs sort <key> <files...>
func Sort(args ...string) []string {
delim := -1
for i, s := range args {
if s == "--" {
delim = i
}
}
cmd := []string{"var", "title"}
if delim != -1 {
cmd = args[:delim]
args = args[delim+1:]
}
sorted := map[string][]string{}
sortedKeys := []string{}
for _, f := range args {
params := append(cmd, f)
out := bytes.NewBuffer(nil)
run(os.Args[0], params, globals(), out)
val := string(out.Bytes())
sorted[val] = append(sorted[val], f)
sortedKeys = append(sortedKeys, val)
}
log.Println(sortedKeys)
sort.Strings(sortedKeys)
if !asc {
}
list := []string{}
for _, k := range sortedKeys {
vals := sorted[k]
sort.Strings(vals)
list = append(list, vals...)
}
return list
}