2024-03-19 14:05:26 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"math/rand"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
fn "github.com/s0rg/fantasyname"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func Generate(count int, code string) ([]string, error) {
|
|
|
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
|
reg := map[string]int{}
|
|
|
|
|
|
|
|
|
|
gen, err := fn.Compile(code, fn.Collapse(true))
|
|
|
|
|
if err != nil {
|
2024-03-19 18:12:02 +01:00
|
|
|
return nil, fmt.Errorf("could not compile FN code: %w", err)
|
2024-03-19 14:05:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := 0; i < count; i++ {
|
|
|
|
|
name := gen.String()
|
2024-03-19 18:12:02 +01:00
|
|
|
if !Exists(reg, name) {
|
2024-03-19 14:05:26 +01:00
|
|
|
reg[name] = 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
names := make([]string, len(reg))
|
|
|
|
|
|
|
|
|
|
i := 0
|
|
|
|
|
for k, _ := range reg {
|
|
|
|
|
names[i] = k
|
|
|
|
|
i++
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return names, nil
|
|
|
|
|
}
|