invent-mots

Generates random words from a given language.

Usage no npm install needed!

<script type="module">
  import inventMots from 'https://cdn.skypack.dev/invent-mots';
</script>

README

invent-mots

version Travis Codecov issues downloads license

Generates random words from a given language.

Installation

This package is distributed via npm:

npm install invent-mots

- or -

Download the file src/index.js and add it to your ES6 project.

Usage

Setting up a language

Before generating any word, you need to set a language.

You can pass it an Array or Set of strings defining the language ...

var invent = require("invent-mots");
// - or - import invent from "invent-mots";

var language = ["hello", "world"];

invent.set(language);

... or directly an Array of strings defining the alphabet and a 2D Array defining the probabilites of each letter being followed by another.

var invent = require("invent-mots");
// - or - import invent from "invent-mots";

var language = {
    alphabet: ["d", "e", "h", "l", "o", "r", "w"],
    matrix: [
                [0, 0.5, 0, 0 , 0.5, 0, 0],
                [0, 0, 0, 1 , 0, 0, 0],
                [0, 1, 0, 0 , 0, 0, 0],
                [0.33333, 0, 0, 0.33333, 0.33333, 0, 0],
                [0, 0, 0, 0 , 0, 1, 0],
                [0, 0, 0, 1 , 0, 0, 0],
                [0, 0, 0, 0 , 1, 0, 0]
            ]
};

invent.set(language);

Generating words

Once a language is set, you have different options to generate words.

var options = {
    size: <int>, // Length of the words to be generated
    number: <int>, // Number of words to generate
    start: <string>, // String that will start every word
    end: <string> // String that will end every word
};

None of those options are mandatory, so you can generate different sets of words, or just let it be plain random by not giving any options.

To generate a set of words, simply call:

invent.mots({
    size: 3,
    number: 1
});
// ["lor"]

Yay! I have created a piece of code that speaks Singlish lor! :smile:

License

MIT

Thanks

The idea for this module came from David Louapre's video and blog post on inventing new words.