random_name_generator 0.1.2

Generates random names in various languages
Documentation
use clap::{crate_authors, crate_license, crate_name, crate_version, App, ArgMatches};
use rnglib::{Language, RNG};

const PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");

fn main() {
    let matches = get_matches();

    let rng = determine_language(&matches);

    if matches.is_present("dump") {
        dump(rng)
    } else if matches.is_present("curse") {
        curse(rng)
    } else {
        generate_name(rng)
    }
}

fn dump(rng: rnglib::RNG) {
    for s in rng.syllables().into_iter() {
        println!("{}", s.to_string())
    }
}

fn curse(rng: rnglib::RNG) {
    let word = rng.generate_short();
    println!("{}", word)
}

fn generate_name(rng: rnglib::RNG) {
    let first_name = rng.generate_name();
    let last_name = rng.generate_name();

    println!("{}: {} {}", rng.name, first_name, last_name)
}

fn determine_language(matches: &ArgMatches) -> RNG {
    if matches.is_present("raw") {
        RNG::new_from_file(matches.value_of("raw").unwrap().to_string()).unwrap()
    } else if matches.is_present("elven") {
        RNG::new(&Language::Elven).unwrap()
    } else if matches.is_present("fantasy") {
        RNG::new(&Language::Fantasy).unwrap()
    } else if matches.is_present("goblin") {
        RNG::new(&Language::Goblin).unwrap()
    } else if matches.is_present("roman") {
        RNG::new(&Language::Roman).unwrap()
    } else if matches.is_present("demonic") {
        RNG::new(&Language::Demonic).unwrap_err()
    } else if matches.is_present("curse") {
        RNG::new(&Language::Curse).unwrap()
    } else {
        let my_dialect_type: Language = rand::random();
        RNG::new(&my_dialect_type).unwrap()
    }
}

fn get_matches() -> ArgMatches {
    App::new(crate_name!())
        .version(crate_version!())
        .author(crate_authors!())
        .license(crate_license!())
        .about(PKG_DESCRIPTION)
        .arg("-c, --curse 'Use the Curse language [UNDER CONSTRUCTION]'")
        .arg("-d, --demonic 'Use the Demonic language [UNDER CONSTRUCTION]'")
        .arg("-e, --elven 'Use the Elven language'")
        .arg("-f, --fantasy 'Use the Fantasy language'")
        .arg("-g, --goblin 'Use the Goblin language'")
        .arg("-r, --roman 'Use the Roman language'")
        .arg("--dump 'Print out the raw lanuage file'")
        .arg("-x, --flipmode 'Use a random language'")
        .arg("--raw=[FILE] 'reads in a raw language file'")
        .get_matches()
}