You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
annieversary 7fb5637ecb oops 2 months ago
src oops 2 months ago
.gitignore get something working 5 months ago
Cargo.toml get something working 5 months ago oops 2 months ago


incantata is a rust library that generates random words according to a provided structure

use incantata::*;

fn main() {
    // structure of the language
    let s = Structure {
        // how many characters the onset is
        onset: 1,
        // allowed characters for the onset
        onset_dict: CONSONANTS.chars().collect(),

        // how many characters the nucleus is
        nucleus: 1,
        // allowed characters for the nucleus
        nucleus_dict: VOCALS
            .take(VOCALS.len() * 5)
            // .chain(VOCALS_ACCENTS.chars())

        // how many characters the coda is
        coda: 0,
        // allowed characters for the coda
        coda_dict: CONSONANTS.chars().collect(),

        // minimum length of a word
        min_len: 4,
        // the words will be generated to be around this length
        // due to the way incantata works (by combining valid syllables),
        // we can't actually make a word of a given length
        suggested_len: 15,

    // generate 10 words
    for _ in 0..10 {
        println!("{}", incantata(&s));