mirror of
https://git.mills.io/prologic/zs.git
synced 2025-01-23 13:57:19 -05: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))
|
||||
case "datefmt":
|
||||
fmt.Println(DateFmt(args))
|
||||
case "wc":
|
||||
fmt.Println(WordCount(args))
|
||||
case "timetoread":
|
||||
fmt.Println(TimeToRead(args))
|
||||
default:
|
||||
err := run(path.Join(ZSDIR, cmd), args, Vars{}, os.Stdout)
|
||||
if err != nil {
|
||||
|
30
zs_ext.go
30
zs_ext.go
@ -1,11 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/drhodes/golorem"
|
||||
"github.com/google/gxui/math"
|
||||
"github.com/jaytaylor/html2text"
|
||||
)
|
||||
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
|
||||
// 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…
Reference in New Issue
Block a user