added functionality to dictionaries

This commit is contained in:
Hazel Noack 2025-07-01 11:10:48 +02:00
parent 31d3b43df0
commit 397f344885
15 changed files with 108 additions and 63 deletions

27
internal/dictionary.go Normal file
View File

@ -0,0 +1,27 @@
package internal
import (
"math/rand/v2"
"sort"
)
type Dictionary []string
func (d Dictionary) GetRandomWord() string {
return d[rand.IntN(len(d))]
}
func (d Dictionary) GetRandomWords(n int) []string {
r := make([]string, n)
for i := range r {
r[i] = d[rand.IntN(len(d))]
}
return r
}
func (d Dictionary) Contains(word string) bool {
index := sort.SearchStrings(d, word)
return index < len(d) && d[index] == word
}

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:21:50.475828877 +0200 CEST m=+0.495847615 // 2025-07-01 11:09:48.109934465 +0200 CEST m=+0.543745683
// using data from // using data from
// /usr/share/dict/american-english // /usr/share/dict/american-english
package dictionary package dictionary
var American-English = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var AmericanEnglish = internal.Dictionary{
"A", "A",
"AA", "AA",
"AAA", "AAA",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:21:52.407274599 +0200 CEST m=+2.427293337 // 2025-07-01 11:09:50.680209997 +0200 CEST m=+3.114021211
// using data from // using data from
// /usr/share/dict/brazilian // /usr/share/dict/brazilian
package dictionary package dictionary
var Brazilian = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Brazilian = internal.Dictionary{
"Abade", "Abade",
"Abadia", "Abadia",
"Abaetetuba", "Abaetetuba",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:21:56.81436211 +0200 CEST m=+6.834380849 // 2025-07-01 11:09:53.474330852 +0200 CEST m=+5.908142075
// using data from // using data from
// /usr/share/dict/british-english // /usr/share/dict/british-english
package dictionary package dictionary
var British-English = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var BritishEnglish = internal.Dictionary{
"A", "A",
"AA", "AA",
"AAA", "AAA",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:21:57.658930047 +0200 CEST m=+7.678948785 // 2025-07-01 11:09:54.634847345 +0200 CEST m=+7.068658569
// using data from // using data from
// /usr/share/dict/cracklib-small // /usr/share/dict/cracklib-small
package dictionary package dictionary
var Cracklib-Small = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var CracklibSmall = internal.Dictionary{
"007bond", "007bond",
"063dyjuy", "063dyjuy",
"070462", "070462",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:01.962007961 +0200 CEST m=+11.982026706 // 2025-07-01 11:09:57.117352243 +0200 CEST m=+9.551163456
// using data from // using data from
// /usr/share/dict/french // /usr/share/dict/french
package dictionary package dictionary
var French = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var French = internal.Dictionary{
"a", "a",
"abaca", "abaca",
"abacule", "abacule",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:06.336848952 +0200 CEST m=+16.356867692 // 2025-07-01 11:09:59.571504161 +0200 CEST m=+12.005315373
// using data from // using data from
// /usr/share/dict/italian // /usr/share/dict/italian
package dictionary package dictionary
var Italian = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Italian = internal.Dictionary{
"Achille", "Achille",
"Adamo", "Adamo",
"Adriano", "Adriano",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:11.241137354 +0200 CEST m=+21.261156092 // 2025-07-01 11:10:02.754154395 +0200 CEST m=+15.187965608
// using data from // using data from
// /usr/share/dict/ngerman // /usr/share/dict/ngerman
package dictionary package dictionary
var Ngerman = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Ngerman = internal.Dictionary{
"ABC", "ABC",
"ABM", "ABM",
"ACL", "ACL",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:14.888368658 +0200 CEST m=+24.908387396 // 2025-07-01 11:10:08.076968748 +0200 CEST m=+20.510779963
// using data from // using data from
// /usr/share/dict/ogerman // /usr/share/dict/ogerman
package dictionary package dictionary
var Ogerman = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Ogerman = internal.Dictionary{
"ADAC", "ADAC",
"AEG", "AEG",
"AG", "AG",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:23.165479177 +0200 CEST m=+33.185497915 // 2025-07-01 11:10:15.007316041 +0200 CEST m=+27.441127269
// using data from // using data from
// /usr/share/dict/portuguese // /usr/share/dict/portuguese
package dictionary package dictionary
var Portuguese = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Portuguese = internal.Dictionary{
"a", "a",
"AAC", "AAC",
"Aachen", "Aachen",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:27.940113508 +0200 CEST m=+37.960132246 // 2025-07-01 11:10:18.794974706 +0200 CEST m=+31.228785917
// using data from // using data from
// /usr/share/dict/spanish // /usr/share/dict/spanish
package dictionary package dictionary
var Spanish = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Spanish = internal.Dictionary{
"a", "a",
"ab", "ab",
"abab", "abab",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:30.417854641 +0200 CEST m=+40.437873379 // 2025-07-01 11:10:22.051859644 +0200 CEST m=+34.485670858
// using data from // using data from
// /usr/share/dict/swiss // /usr/share/dict/swiss
package dictionary package dictionary
var Swiss = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Swiss = internal.Dictionary{
"ABC", "ABC",
"ABM", "ABM",
"ACL", "ACL",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// 2025-06-30 17:22:37.555687817 +0200 CEST m=+47.575706555 // 2025-07-01 11:10:25.381877881 +0200 CEST m=+37.815689116
// using data from // using data from
// /usr/share/dict/words // /usr/share/dict/words
package dictionary package dictionary
var Words = []string{ import (
"foo", "gitea.elara.ws/Hazel/go-words/internal"
"bar", )
"baz",
var Words = internal.Dictionary{
"A", "A",
"AA", "AA",
"AAA", "AAA",

View File

@ -15,6 +15,8 @@ import (
const Directory = "/usr/share/dict" 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 wordsTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at // This file was generated by robots at
// {{ .Timestamp }} // {{ .Timestamp }}
@ -22,7 +24,11 @@ var wordsTemplate = template.Must(template.New("").Parse(`// Code generated by g
// {{ .Path }} // {{ .Path }}
package dictionary package dictionary
var {{ .VarName }} = []string{ import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var {{ .VarName }} = internal.Dictionary{
{{- range .Words }} {{- range .Words }}
{{ printf "%q" . }}, {{ printf "%q" . }},
{{- end }} {{- end }}
@ -71,7 +77,7 @@ func generateFile(name string) {
Timestamp: time.Now(), Timestamp: time.Now(),
Path: Path, Path: Path,
Words: words, Words: words,
VarName: strings.Title(name), VarName: nonAlphanumericRegex.ReplaceAllString(strings.Title(name), ""),
}) })
} }

View File

@ -9,5 +9,5 @@ import (
//go:generate go run internal/gen.go //go:generate go run internal/gen.go
func main() { func main() {
fmt.Println(dictionary.Foo) fmt.Println(dictionary.Brazilian.GetRandomWord())
} }