Files
namegen/generators/modernenglish.go
T
2025-08-01 00:15:34 +01:00

75 lines
1.7 KiB
Go

package generators
import (
"encoding/json"
"math/rand"
"os"
)
type ModernEnglishArrays struct {
Nm1 []string `json:"nm1"`
Nm2 []string `json:"nm2"`
Nm3 []string `json:"nm3"`
Nm4 []string `json:"nm4"`
Nm5 []string `json:"nm5"`
Nm6 []string `json:"nm6"`
Nm7 []string `json:"nm7"`
}
func LoadModernEnglishArrays(path string) (ModernEnglishArrays, error) {
var arr ModernEnglishArrays
f, err := os.Open(path)
if err != nil {
return arr, err
}
defer f.Close()
dec := json.NewDecoder(f)
if err := dec.Decode(&arr); err != nil {
return arr, err
}
return arr, nil
}
// type: 0=male, 1=female, 2=unisex
func GenerateModernEnglishNames(arr *ModernEnglishArrays, swear func(string) bool, t int) []string {
var names []string
for i := 0; i < 10; i++ {
var name string
if t == 1 {
if i < 5 {
rnd := rand.Intn(len(arr.Nm2))
rnd2 := rand.Intn(len(arr.Nm3))
name = arr.Nm2[rnd] + " " + arr.Nm3[rnd2]
} else {
rnd := rand.Intn(len(arr.Nm5))
rnd2 := rand.Intn(len(arr.Nm6))
name = arr.Nm5[rnd] + " " + arr.Nm6[rnd2]
}
} else if t == 2 {
if i < 5 {
rnd := rand.Intn(len(arr.Nm7))
rnd2 := rand.Intn(len(arr.Nm3))
name = arr.Nm7[rnd] + " " + arr.Nm3[rnd2]
} else {
rnd := rand.Intn(len(arr.Nm7))
rnd2 := rand.Intn(len(arr.Nm6))
name = arr.Nm7[rnd] + " " + arr.Nm6[rnd2]
}
} else {
if i < 5 {
rnd := rand.Intn(len(arr.Nm1))
rnd2 := rand.Intn(len(arr.Nm3))
name = arr.Nm1[rnd] + " " + arr.Nm3[rnd2]
} else {
rnd := rand.Intn(len(arr.Nm4))
rnd2 := rand.Intn(len(arr.Nm6))
name = arr.Nm4[rnd] + " " + arr.Nm6[rnd2]
}
}
if !swear(name) {
names = append(names, name)
}
}
return names
}