This is a golang implementation of name generator described at RinkWorks,
its based on code.


How it looks like:

    import ""

    gen, err := fantasyname.Compile("sV'i", true)
    if err != nil {

    fmt.Println(gen.String()) // will print something like: entheu'loaf

Here is a full example.

You can run it with go run _example/main.go to see results.

pattern syntax

The letters s, v, V, c, B, C, i, m, M, D, and d represent different types of random replacements:

  • s – generic syllable
  • v – vowel
  • V – vowel or vowel combination
  • c – consonant
  • B – consonant or consonant combination suitable for beginning a word
  • C – consonant or consonant combination suitable anywhere in a word
  • i – insult
  • m – mushy name
  • M – mushy name ending
  • D – consonant suited for a stupid person’s name
  • d – syllable suited for a stupid person’s name (begins with a vowel)

Everything else is emitted literally.

All characters between parenthesis () are emitted literally. For example, the pattern s(dim),
emits a random generic syllable followed by dim.

Characters between angle brackets <> emit patterns from the table above.
Imagine the entire pattern is wrapped in one of these.

In both types of groupings, a vertical bar | denotes a random choice. Empty groups are allowed.
For example, (foo|bar) emits either foo or bar. The pattern <c|v|> emits a constant, vowel,
or nothing at all.

An exclamation point ! means to capitalize the component that follows it. For example,
!(foo) will emit Foo and v!s will emit a lowercase vowel followed by a capitalized syllable, like eRod.


View Github