random_name_generator

Crates.iorandom_name_generator
lib.rsrandom_name_generator
version0.3.6
sourcesrc
created_at2020-09-08 17:39:03.270303
updated_at2023-09-16 19:08:11.080698
descriptionRandom Name Generator
homepagehttps://github.com/folkengine/random_name_generator_rs
repositoryhttps://github.com/folkengine/random_name_generator_rs.git
max_upload_size
id286212
size116,003
Christoph (folkengine)

documentation

README

random_name_generator

Crates.io Crates.io License Build and Test

This is a rust port of the Ruby port of the Java Random Name Generator library.

It generates it's results based upon which language file is specified. Currently, the following are supported in both English and Russian:

Thanks to Zhumatiy Sergey, for his contribution of the Russian language files, originally in the Ruby version of this library!

The following are in progress:

Using the library

use rnglib::{RNG, Language};

fn main() {
    let rng = RNG::try_from(&Language::Elven).unwrap();
    
    let first_name = rng.generate_name();
    let last_name = rng.generate_name();
    
    println!("{}: {} {}", rng.name, first_name, last_name)
}

It is possible to control the number of syllables for a generated name:

use rnglib::{RNG, Language};

fn main() {
    let rng = RNG::try_from(&Language::Fantasy).unwrap();
    let name = rng.generate_name_by_count(3);
    println!("{}: {}", rng.name, name)
}

One can also pass in custom language files:

use rnglib::{RNG};

fn main() {
    let rng = RNG::new_from_file("src/languages/Test-tiny.txt").unwrap();
    let name = rng.generate_name();
    println!("{}: {}", rng.name, name)
}

Running the binary

To get information about the available options, run help.

Using cargo:

$> cargo run -- --help
Random Name Generator

Usage: rng [OPTIONS]

Options:
  -d, --demonic
  -e, --elven
  -f, --fantasy
  -g, --goblin
  -r, --roman
  -c, --curse            [UNDER CONSTRUCTION]
  -x, --flipmode         Flipmode is the greatest! (Random language)
      --russian          Use Russian language file, if available
      --short            Creates shorter names
      --raw <FILE>       Reads in a raw language file
  -n, --number <number>  Number of names created. [default: 2]
  -h, --help             Print help
  -V, --version          Print version

or from the binary:

$> rng --help

Passing in one of the language flags will generate a name using that Language's source file.

From cargo:

$> cargo run -- -g
Goblin: zradogul bargodul

It also now supports Russian language files:

❯ cargo run -- --roman --russian
Римский: Дафрибуцио Дубенус

❯ cargo run -- --goblin --russian
Гоблин: Краог Зрашагул

❯ cargo run -- --fantasy --russian
Фантазия: Валорнен Гарлакот

❯ cargo run -- --elven --russian
Эльфийский: Латэнаэлмасан Шелиан

From the binary:

$> rng -e
Elven: daedar latherdre

Dependencies

Dev Dependencies

TODO

  • Finish curse words
  • Add syllable weight flag
  • Add number of names flag

Further Interest

Commit count: 123

cargo fmt