package generators import ( "encoding/json" "math/rand" "os" ) type WildenArrays struct { NmMFf []string `json:"nmMFf"` NmMFl []string `json:"nmMFl"` NmMSf []string `json:"nmMSf"` NmMSl []string `json:"nmMSl"` NmFF []string `json:"nmFF"` NmFL []string `json:"nmFL"` } func LoadWildenArrays(path string) (WildenArrays, error) { var arr WildenArrays 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: "female" or "male" (default male) func GenerateWildenNames(arr *WildenArrays, swear func(string) bool, gender string) []string { var names []string for i := 0; i < 10; i++ { var name string if gender == "female" { rnd := rand.Intn(len(arr.NmFF)) rnd2 := rand.Intn(len(arr.NmFL)) name = arr.NmFF[rnd] + arr.NmFL[rnd2] } else { if i < 5 { rnd := rand.Intn(len(arr.NmMFf)) rnd2 := rand.Intn(len(arr.NmMFl)) name = arr.NmMFf[rnd] + arr.NmMFl[rnd2] } else { rnd := rand.Intn(len(arr.NmMSf)) rnd2 := rand.Intn(len(arr.NmMSl)) name = arr.NmMSf[rnd] + arr.NmMSl[rnd2] } } if !swear(name) { names = append(names, name) } } return names }