{"id":13412922,"url":"https://github.com/s0rg/fantasyname","last_synced_at":"2025-10-07T23:27:38.169Z","repository":{"id":46158926,"uuid":"425939891","full_name":"s0rg/fantasyname","owner":"s0rg","description":"RinkWorks fantasy name generator for golang","archived":false,"fork":false,"pushed_at":"2025-04-25T10:23:53.000Z","size":67,"stargazers_count":36,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-25T11:33:47.356Z","etag":null,"topics":["game-development","golang","name-generation","procedural-generation"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s0rg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-08T17:54:10.000Z","updated_at":"2025-04-25T10:21:12.000Z","dependencies_parsed_at":"2024-10-26T08:36:39.710Z","dependency_job_id":"089552cf-e3c0-4ed4-9247-e08c0d1ee266","html_url":"https://github.com/s0rg/fantasyname","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Ffantasyname","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Ffantasyname/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Ffantasyname/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Ffantasyname/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s0rg","download_url":"https://codeload.github.com/s0rg/fantasyname/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251652944,"owners_count":21622042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-development","golang","name-generation","procedural-generation"],"created_at":"2024-07-30T20:01:31.125Z","updated_at":"2025-10-07T23:27:33.113Z","avatar_url":"https://github.com/s0rg.png","language":"Go","funding_links":[],"categories":["Game Development","游戏开发"],"sub_categories":["Search and Analytic Databases","检索及分析资料库"],"readme":"[![PkgGoDev](https://pkg.go.dev/badge/github.com/s0rg/fantasyname)](https://pkg.go.dev/github.com/s0rg/fantasyname)\n[![License](https://img.shields.io/github/license/s0rg/fantasyname)](https://github.com/s0rg/fantasyname/blob/main/LICENSE)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/s0rg/fantasyname)](go.mod)\n[![Tag](https://img.shields.io/github/v/tag/s0rg/fantasyname?sort=semver)](https://github.com/s0rg/fantasyname/tags)\n[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)\n\n[![CI](https://github.com/s0rg/fantasyname/workflows/ci/badge.svg)](https://github.com/s0rg/fantasyname/actions?query=workflow%3Aci)\n[![Go Report Card](https://goreportcard.com/badge/github.com/s0rg/fantasyname)](https://goreportcard.com/report/github.com/s0rg/fantasyname)\n[![Maintainability](https://qlty.sh/badges/09a35bec-e65e-4587-a845-4ba6982fd69f/maintainability.svg)](https://qlty.sh/gh/s0rg/projects/fantasyname)\n[![Code Coverage](https://qlty.sh/badges/09a35bec-e65e-4587-a845-4ba6982fd69f/test_coverage.svg)](https://qlty.sh/gh/s0rg/projects/fantasyname)\n![Issues](https://img.shields.io/github/issues/s0rg/fantasyname)\n\n# fantasyname\n\nThis is a golang implementation of [name generator described at RinkWorks](http://rinkworks.com/namegen/),\nits based on [https://github.com/skeeto/fantasyname](https://github.com/skeeto/fantasyname) code.\n\n# example\n\nHow it looks like:\n```go\nimport (\n    \"fmt\"\n    \"log\"\n    \"time\"\n    \"math/rand\"\n\n    fn \"github.com/s0rg/fantasyname\"\n)\n\nfunc main() {\n    rand.Seed(time.Now().UnixNano())\n\n    gen, err := fn.Compile(\"sV'i\", fn.Collapse(true), fn.RandFn(rand.Intn))\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    fmt.Println(gen.String()) // will print something like: entheu'loaf\n}\n```\n\n[Here](https://github.com/s0rg/fantasyname/blob/master/_example/main.go) is a full example.\n\nYou can run it with `go run _example/main.go` to see results.\n\n# ready-to-use cli app\n\nCreated by [TLINDEN](https://github.com/TLINDEN/): [gfn](https://github.com/TLINDEN/gfn)\n\n# pattern syntax\n\nThe letters `s`, `v`, `V`, `c`, `B`, `C`, `i`, `m`, `M`, `D`, and `d` represent different types of random replacements:\n\n - `s` - generic syllable\n - `v` - vowel\n - `V` - vowel or vowel combination\n - `c` - consonant\n - `B` - consonant or consonant combination suitable for beginning a word\n - `C` - consonant or consonant combination suitable anywhere in a word\n - `i` - insult\n - `m` - mushy name\n - `M` - mushy name ending\n - `D` - consonant suited for a stupid person's name\n - `d` - syllable suited for a stupid person's name (begins with a vowel)\n\nEverything else is emitted literally.\n\nAll characters between parenthesis `()` are emitted literally. For example, the pattern `s(dim)`,\nemits a random generic syllable followed by `dim`.\n\nCharacters between angle brackets `\u003c\u003e` emit patterns from the table above.\nImagine the entire pattern is wrapped in one of these.\n\nIn both types of groupings, a vertical bar `|` denotes a random choice. Empty groups are allowed.\nFor example, `(foo|bar)` emits either `foo` or `bar`. The pattern `\u003cc|v|\u003e` emits a constant, vowel,\nor nothing at all.\n\nAn exclamation point `!` means to capitalize the component that follows it. For example,\n`!(foo)` will emit `Foo` and `v!s` will emit a lowercase vowel followed by a capitalized syllable, like `eRod`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0rg%2Ffantasyname","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs0rg%2Ffantasyname","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0rg%2Ffantasyname/lists"}