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.
// 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
// /usr/share/dict/american-english
package dictionary
var American-English = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var AmericanEnglish = internal.Dictionary{
"A",
"AA",
"AAA",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/brazilian
package dictionary
var Brazilian = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Brazilian = internal.Dictionary{
"Abade",
"Abadia",
"Abaetetuba",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/british-english
package dictionary
var British-English = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var BritishEnglish = internal.Dictionary{
"A",
"AA",
"AAA",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/cracklib-small
package dictionary
var Cracklib-Small = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var CracklibSmall = internal.Dictionary{
"007bond",
"063dyjuy",
"070462",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/french
package dictionary
var French = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var French = internal.Dictionary{
"a",
"abaca",
"abacule",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/italian
package dictionary
var Italian = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Italian = internal.Dictionary{
"Achille",
"Adamo",
"Adriano",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/ngerman
package dictionary
var Ngerman = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Ngerman = internal.Dictionary{
"ABC",
"ABM",
"ACL",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/ogerman
package dictionary
var Ogerman = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Ogerman = internal.Dictionary{
"ADAC",
"AEG",
"AG",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/portuguese
package dictionary
var Portuguese = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Portuguese = internal.Dictionary{
"a",
"AAC",
"Aachen",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/spanish
package dictionary
var Spanish = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Spanish = internal.Dictionary{
"a",
"ab",
"abab",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/swiss
package dictionary
var Swiss = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Swiss = internal.Dictionary{
"ABC",
"ABM",
"ACL",

View File

@ -1,14 +1,15 @@
// Code generated by go generate; DO NOT EDIT.
// 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
// /usr/share/dict/words
package dictionary
var Words = []string{
"foo",
"bar",
"baz",
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var Words = internal.Dictionary{
"A",
"AA",
"AAA",

View File

@ -15,6 +15,8 @@ import (
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.
// This file was generated by robots at
// {{ .Timestamp }}
@ -22,7 +24,11 @@ var wordsTemplate = template.Must(template.New("").Parse(`// Code generated by g
// {{ .Path }}
package dictionary
var {{ .VarName }} = []string{
import (
"gitea.elara.ws/Hazel/go-words/internal"
)
var {{ .VarName }} = internal.Dictionary{
{{- range .Words }}
{{ printf "%q" . }},
{{- end }}
@ -71,7 +77,7 @@ func generateFile(name string) {
Timestamp: time.Now(),
Path: Path,
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
func main() {
fmt.Println(dictionary.Foo)
fmt.Println(dictionary.Brazilian.GetRandomWord())
}