mirror of
https://git.mills.io/prologic/zs
synced 2025-02-07 07:39:22 +03:00
added word count and time to read functions
This commit is contained in:
parent
6b2dbafa34
commit
2901049048
4
zs.go
4
zs.go
@ -304,6 +304,10 @@ func main() {
|
|||||||
fmt.Println(DateParse(args))
|
fmt.Println(DateParse(args))
|
||||||
case "datefmt":
|
case "datefmt":
|
||||||
fmt.Println(DateFmt(args))
|
fmt.Println(DateFmt(args))
|
||||||
|
case "wc":
|
||||||
|
fmt.Println(WordCount(args))
|
||||||
|
case "timetoread":
|
||||||
|
fmt.Println(TimeToRead(args))
|
||||||
default:
|
default:
|
||||||
err := run(path.Join(ZSDIR, cmd), args, Vars{}, os.Stdout)
|
err := run(path.Join(ZSDIR, cmd), args, Vars{}, os.Stdout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
30
zs_ext.go
30
zs_ext.go
@ -1,11 +1,15 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/drhodes/golorem"
|
"github.com/drhodes/golorem"
|
||||||
|
"github.com/google/gxui/math"
|
||||||
|
"github.com/jaytaylor/html2text"
|
||||||
)
|
)
|
||||||
|
|
||||||
// zs var <filename> -- returns list of variables and their values
|
// zs var <filename> -- returns list of variables and their values
|
||||||
@ -70,3 +74,29 @@ func DateParse(args []string) string {
|
|||||||
return strconv.FormatInt(d.Unix(), 10)
|
return strconv.FormatInt(d.Unix(), 10)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// zs wc <file> -- returns word count in the file (markdown, html or amber)
|
||||||
|
func WordCount(args []string) int {
|
||||||
|
if os.Getenv("ZS_RECURSION") != "" {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if len(args) != 1 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
os.Setenv("ZS_RECURSION", "1")
|
||||||
|
out := &bytes.Buffer{}
|
||||||
|
if err := build(args[0], out, builtins(), globals()); err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if s, err := html2text.FromString(string(out.Bytes())); err != nil {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return len(strings.Fields(s))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// zs timetoread <file> -- returns number of minutes required to read the text
|
||||||
|
func TimeToRead(args []string) int {
|
||||||
|
wc := WordCount(args)
|
||||||
|
return int(math.Round(float64(wc) / float64(200)))
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user