package generators import ( "encoding/json" "math/rand" "os" "time" ) type WarforgedArrays struct { Nm1 []string `json:"nm1"` } func LoadWarforgedArrays(path string) (WarforgedArrays, error) { var arr WarforgedArrays 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 } func GenerateWarforgedNames(arr *WarforgedArrays, swearFilter func(string) bool) []string { names := make([]string, 0, 10) r := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 10; i++ { var n string rnd := r.Intn(len(arr.Nm1)) n = arr.Nm1[rnd] for n == "" || swearFilter(n) { rnd = r.Intn(len(arr.Nm1)) n = arr.Nm1[rnd] } names = append(names, n) } return names }