// +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 }} } `))