1
0
Fork 0
pword/pw/words_generate.go

71 lines
1.1 KiB
Go

// +build ignore
package main
import (
"log"
"bufio"
"os"
"text/template"
"time"
)
func main() {
wordsShort := loadWords("eff-short.txt")
wordsLong := loadWords("eff-long.txt")
f, err := os.Create("words.go")
if err != nil {
log.Fatal(err)
}
defer f.Close()
packageTemplate.Execute(f, struct {
Timestamp time.Time
WordsShort []string
WordsLong []string
}{
Timestamp: time.Now(),
WordsShort: wordsShort,
WordsLong: wordsLong,
})
}
func loadWords(filename string) (words []string) {
f, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}
defer f.Close()
sc := bufio.NewScanner(f)
sc.Split(bufio.ScanWords)
for sc.Scan() {
sc.Scan()
words = append(words, sc.Text())
}
if sc.Err() != nil {
log.Fatal(err)
}
return
}
var packageTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at
// {{ .Timestamp }}
package pw
var WordsShort = []string{
{{- range .WordsShort }}
{{ printf "%q" . }},
{{- end }}
}
var WordsLong = []string{
{{- range .WordsLong }}
{{ printf "%q" . }},
{{- end }}
}
`))