aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-11-28 17:59:54 +0000
committerChristine Dodrill <me@christine.website>2019-11-28 18:24:54 +0000
commite49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045 (patch)
tree80b607d7814bfd0d9074cb7300d0f74f51648cb3
parent5ee82a95f07b22a0e87c165a18a6f546cdc8daa2 (diff)
downloadx-e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045.tar.xz
x-e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045.zip
namegen done better
-rw-r--r--go.mod1
-rw-r--r--go.sum2
-rw-r--r--namegen/namegen.go36
-rw-r--r--namegen/namegen_test.go11
4 files changed, 50 insertions, 0 deletions
diff --git a/go.mod b/go.mod
index 6443c24..078edc1 100644
--- a/go.mod
+++ b/go.mod
@@ -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
diff --git a/go.sum b/go.sum
index 58dc1d3..0e422a4 100644
--- a/go.sum
+++ b/go.sum
@@ -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")
+ }
+}