diff options
| author | Christine Dodrill <me@christine.website> | 2019-11-28 17:59:54 +0000 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-11-28 18:24:54 +0000 |
| commit | e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045 (patch) | |
| tree | 80b607d7814bfd0d9074cb7300d0f74f51648cb3 | |
| parent | 5ee82a95f07b22a0e87c165a18a6f546cdc8daa2 (diff) | |
| download | x-e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045.tar.xz x-e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045.zip | |
namegen done better
| -rw-r--r-- | go.mod | 1 | ||||
| -rw-r--r-- | go.sum | 2 | ||||
| -rw-r--r-- | namegen/namegen.go | 36 | ||||
| -rw-r--r-- | namegen/namegen_test.go | 11 |
4 files changed, 50 insertions, 0 deletions
@@ -1,6 +1,7 @@ module within.website/x require ( + cirello.io/goherokuname v0.0.0-20190914093443-b436bae8c2c5 git.xeserv.us/xena/jvozba v0.0.0-20190616002803-f274e24d1e52 github.com/McKael/madon/v2 v2.0.0-20180929094633-c679abc985d6 github.com/Yawning/bulb v0.0.0-20170405033506-85d80d893c3d @@ -1,5 +1,7 @@ bou.ke/monkey v1.0.1 h1:zEMLInw9xvNakzUUPjfS4Ds6jYPqCFx3m7bRmG5NH2U= bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg= +cirello.io/goherokuname v0.0.0-20190914093443-b436bae8c2c5 h1:W1xHfkFJ/G3/KGsRFV1S9DPFM6yB+ndu4Tbnvp7Ec1E= +cirello.io/goherokuname v0.0.0-20190914093443-b436bae8c2c5/go.mod h1:lfp+7qXdkiHbLqAvsA4v2Cyll5djTKZTiNi+iDfPJcw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= git.xeserv.us/xena/jvozba v0.0.0-20190616002803-f274e24d1e52 h1:MumuDSv8Ebsal1C98APrRRb8JyX+FpKiyGT/8fiMjaw= git.xeserv.us/xena/jvozba v0.0.0-20190616002803-f274e24d1e52/go.mod h1:lPdeNnexyxX+GQt62HV9UypJDg9enMwadWLXazGUUuc= diff --git a/namegen/namegen.go b/namegen/namegen.go new file mode 100644 index 0000000..2328c1b --- /dev/null +++ b/namegen/namegen.go @@ -0,0 +1,36 @@ +// Package namegen generates a random name with one of several strategies. +package namegen + +import ( + "math/rand" + "time" + + "cirello.io/goherokuname" + "within.website/x/namegen/elfs" + "within.website/x/namegen/tarot" +) + +// Generator is a name generation function. +type Generator func() string + +// AddGenerator adds a generator to the list +func AddGenerator(g Generator) { + strats = append(strats, g) +} + +func init() { + rand.Seed(time.Now().UnixNano()) + + AddGenerator(elfs.Next) + AddGenerator(tarot.Next) + AddGenerator(goherokuname.HaikunateHex) +} + +var strats []Generator + +// Next gives you the next name in the series. +func Next() string { + gen := rand.Intn(len(strats)) + + return strats[gen]() +} diff --git a/namegen/namegen_test.go b/namegen/namegen_test.go new file mode 100644 index 0000000..36c66f1 --- /dev/null +++ b/namegen/namegen_test.go @@ -0,0 +1,11 @@ +package namegen + +import "testing" + +func TestNext(t *testing.T) { + name := Next() + t.Log(name) + if name == "" { + t.Fatal("expected a name") + } +} |
