package generators import ( "encoding/json" "math/rand" "os" ) type ModernPortugueseEUArrays 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 LoadModernPortugueseEUArrays(path string) (ModernPortugueseEUArrays, error) { var arr ModernPortugueseEUArrays 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 GenerateModernPortugueseEUNames(arr *ModernPortugueseEUArrays, swear func(string) bool, t int) []string { var names []string for i := 0; i < 10; i++ { var name string switch t { case 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] } case 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] } default: 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 }