diff --git a/exports.go b/exports.go new file mode 100644 index 0000000..4dc8b65 --- /dev/null +++ b/exports.go @@ -0,0 +1,24 @@ +// Code generated by go generate; DO NOT EDIT. +// This file was generated by robots at +// 2025-07-01 11:32:34.988359534 +0200 CEST m=+36.555541212 +// It exports the Dictionaries for easy use + +package main + +import ( + "gitea.elara.ws/Hazel/go-words/internal/dictionary" +) + + +var AmericanEnglish = dictionary.AmericanEnglish +var Brazilian = dictionary.Brazilian +var BritishEnglish = dictionary.BritishEnglish +var CracklibSmall = dictionary.CracklibSmall +var French = dictionary.French +var Italian = dictionary.Italian +var Ngerman = dictionary.Ngerman +var Ogerman = dictionary.Ogerman +var Portuguese = dictionary.Portuguese +var Spanish = dictionary.Spanish +var Swiss = dictionary.Swiss +var Words = dictionary.Words diff --git a/internal/dictionary/american-english.go b/internal/dictionary/american-english.go index 07812f8..15c9407 100644 --- a/internal/dictionary/american-english.go +++ b/internal/dictionary/american-english.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:48.109934465 +0200 CEST m=+0.543745683 +// 2025-07-01 11:31:59.285464586 +0200 CEST m=+0.852646276 // using data from // /usr/share/dict/american-english package dictionary diff --git a/internal/dictionary/brazilian.go b/internal/dictionary/brazilian.go index 31559d6..23f71fe 100644 --- a/internal/dictionary/brazilian.go +++ b/internal/dictionary/brazilian.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:50.680209997 +0200 CEST m=+3.114021211 +// 2025-07-01 11:32:02.247699057 +0200 CEST m=+3.814880729 // using data from // /usr/share/dict/brazilian package dictionary diff --git a/internal/dictionary/british-english.go b/internal/dictionary/british-english.go index 3338bc2..b39ce68 100644 --- a/internal/dictionary/british-english.go +++ b/internal/dictionary/british-english.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:53.474330852 +0200 CEST m=+5.908142075 +// 2025-07-01 11:32:04.843870152 +0200 CEST m=+6.411051818 // using data from // /usr/share/dict/british-english package dictionary diff --git a/internal/dictionary/cracklib-small.go b/internal/dictionary/cracklib-small.go index b8e4f6d..e7f54f3 100644 --- a/internal/dictionary/cracklib-small.go +++ b/internal/dictionary/cracklib-small.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:54.634847345 +0200 CEST m=+7.068658569 +// 2025-07-01 11:32:05.852284263 +0200 CEST m=+7.419465960 // using data from // /usr/share/dict/cracklib-small package dictionary diff --git a/internal/dictionary/french.go b/internal/dictionary/french.go index 8a5ae72..c3308ae 100644 --- a/internal/dictionary/french.go +++ b/internal/dictionary/french.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:57.117352243 +0200 CEST m=+9.551163456 +// 2025-07-01 11:32:08.768649692 +0200 CEST m=+10.335831451 // using data from // /usr/share/dict/french package dictionary diff --git a/internal/dictionary/italian.go b/internal/dictionary/italian.go index 5d5e51a..7396a39 100644 --- a/internal/dictionary/italian.go +++ b/internal/dictionary/italian.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:09:59.571504161 +0200 CEST m=+12.005315373 +// 2025-07-01 11:32:11.350897568 +0200 CEST m=+12.918079237 // using data from // /usr/share/dict/italian package dictionary diff --git a/internal/dictionary/ngerman.go b/internal/dictionary/ngerman.go index 6082bfc..76469ee 100644 --- a/internal/dictionary/ngerman.go +++ b/internal/dictionary/ngerman.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:02.754154395 +0200 CEST m=+15.187965608 +// 2025-07-01 11:32:14.500934577 +0200 CEST m=+16.068116246 // using data from // /usr/share/dict/ngerman package dictionary diff --git a/internal/dictionary/ogerman.go b/internal/dictionary/ogerman.go index 6d6b8e4..c3ec227 100644 --- a/internal/dictionary/ogerman.go +++ b/internal/dictionary/ogerman.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:08.076968748 +0200 CEST m=+20.510779963 +// 2025-07-01 11:32:19.034688991 +0200 CEST m=+20.601870658 // using data from // /usr/share/dict/ogerman package dictionary diff --git a/internal/dictionary/portuguese.go b/internal/dictionary/portuguese.go index 0666764..4717c8e 100644 --- a/internal/dictionary/portuguese.go +++ b/internal/dictionary/portuguese.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:15.007316041 +0200 CEST m=+27.441127269 +// 2025-07-01 11:32:23.873689829 +0200 CEST m=+25.440871511 // using data from // /usr/share/dict/portuguese package dictionary diff --git a/internal/dictionary/spanish.go b/internal/dictionary/spanish.go index b6ba8f9..c739ff4 100644 --- a/internal/dictionary/spanish.go +++ b/internal/dictionary/spanish.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:18.794974706 +0200 CEST m=+31.228785917 +// 2025-07-01 11:32:27.258877258 +0200 CEST m=+28.826058926 // using data from // /usr/share/dict/spanish package dictionary diff --git a/internal/dictionary/swiss.go b/internal/dictionary/swiss.go index 46020ed..821ab6f 100644 --- a/internal/dictionary/swiss.go +++ b/internal/dictionary/swiss.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:22.051859644 +0200 CEST m=+34.485670858 +// 2025-07-01 11:32:30.830794679 +0200 CEST m=+32.397976353 // using data from // /usr/share/dict/swiss package dictionary diff --git a/internal/dictionary/words.go b/internal/dictionary/words.go index c5c022f..1627dfe 100644 --- a/internal/dictionary/words.go +++ b/internal/dictionary/words.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-07-01 11:10:25.381877881 +0200 CEST m=+37.815689116 +// 2025-07-01 11:32:34.372204616 +0200 CEST m=+35.939386287 // using data from // /usr/share/dict/words package dictionary diff --git a/internal/gen.go b/internal/gen.go index b819ba7..8942922 100644 --- a/internal/gen.go +++ b/internal/gen.go @@ -17,7 +17,7 @@ const Directory = "/usr/share/dict" var nonAlphanumericRegex = regexp.MustCompile(`[^a-zA-Z0-9 ]+`) -var wordsTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT. +var dictionaryTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT. // This file was generated by robots at // {{ .Timestamp }} // using data from @@ -35,14 +35,35 @@ var {{ .VarName }} = internal.Dictionary{ } `)) -type templateData struct { +type dictionaryTemplateData struct { Timestamp time.Time Path string Words []string VarName string } -func generateFile(name string) { +var exportTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT. +// This file was generated by robots at +// {{ .Timestamp }} +// It exports the Dictionaries for easy use + +package main + +import ( + "gitea.elara.ws/Hazel/go-words/internal/dictionary" +) + +{{range $VarName := .VarNames }} +var {{ $VarName }} = dictionary.{{ $VarName }} +{{- end }} +`)) + +type exportTemplateData struct { + Timestamp time.Time + VarNames []string +} + +func generateFile(name string) string { fmt.Println("generating file for dictionary " + name) lowerName := strings.ToLower(name) @@ -73,12 +94,15 @@ func generateFile(name string) { die(err) defer f.Close() - wordsTemplate.Execute(f, templateData{ + varName := nonAlphanumericRegex.ReplaceAllString(strings.Title(name), "") + dictionaryTemplate.Execute(f, dictionaryTemplateData{ Timestamp: time.Now(), Path: Path, Words: words, - VarName: nonAlphanumericRegex.ReplaceAllString(strings.Title(name), ""), + VarName: varName, }) + + return varName } func main() { @@ -89,13 +113,20 @@ func main() { die(err) } + varNames := make([]string, 0) for _, e := range entries { if !strings.Contains(e.Name(), ".") { - generateFile(e.Name()) + varNames = append(varNames, generateFile(e.Name())) } } - // generateFile("words") + f, err := os.Create("exports.go") + die(err) + defer f.Close() + exportTemplate.Execute(f, exportTemplateData{ + Timestamp: time.Now(), + VarNames: varNames, + }) } func die(err error) { diff --git a/main.go b/main.go index 4d4f529..fc80d40 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,12 @@ package main -import ( - "fmt" - - "gitea.elara.ws/Hazel/go-words/internal/dictionary" -) +import "fmt" //go:generate go run internal/gen.go func main() { - fmt.Println(dictionary.Brazilian.GetRandomWord()) + fmt.Println(Words.Contains("hello")) + fmt.Println(Words.GetRandomWord()) + fmt.Println(Brazilian.GetRandomWord()) + fmt.Println(CracklibSmall.GetRandomWord()) }