package generators import ( "encoding/json" "math/rand" "os" ) type ShifterArrays struct { Names1 []string `json:"names1"` Names2 []string `json:"names2"` } func LoadShifterArrays(path string) (ShifterArrays, error) { var arr ShifterArrays file, err := os.Open(path) if err != nil { return arr, err } defer file.Close() decoder := json.NewDecoder(file) if err := decoder.Decode(&arr); err != nil { return arr, err } return arr, nil } // gender: "male" or "female" func GenerateShifterName(arr ShifterArrays, gender string) string { if gender == "female" { rnd := rand.Intn(len(arr.Names2)) return arr.Names2[rnd] } rnd := rand.Intn(len(arr.Names1)) return arr.Names1[rnd] } func GenerateShifterNames(arr *ShifterArrays, gender string, swearFilter func(string) bool) []string { names := make([]string, 0, 10) for range 10 { var n string if gender == "female" { n = GenerateShifterName(*arr, "female") } else { n = GenerateShifterName(*arr, "male") } for n == "" || swearFilter(n) { if gender == "female" { n = GenerateShifterName(*arr, "female") } else { n = GenerateShifterName(*arr, "male") } } names = append(names, n) } return names }