npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fable-names

v1.0.5

Published

FableNames is a module which can generate infinite number of names, totally random or similar to some example group (like Elven names, Irish names, Japanese names, etc.).

Downloads

9

Readme

fable-names

FableNames is a module which can generate infinite number of names, totally random or similar to some example group (like Elven names, Irish names, Japanese names, etc.).

Build Status NPM:

To install:

npm install fable-names --save

Random

When you're creating new FableNames instance without options it automatically generates some random options:

var FableNames = require('fable-names');
var generator = new FableNames();
var randomName = generator.get();

All of names from one generator will sound similar, here are names generated with one generator:

Hu, Enej, Hexumeq, Equmeq, Apum, Qaumeq, Hexeq, Enufun, Ebufun, Dahexyh

See full example at examples/1-random-names-example.js.

From examples

FableNames can also analyze number of names and generate similar. For good results it should contain decent number of names:

var FableNames = require('fable-names');

// Array of real Japanese names
var japaneseNames = ["Sato", "Suzuki", "Takahashi", "Tanaka", "Watanabe", ...];

var japaneseNamesOptions = FableNames.analyze(japaneseNames); 

var japaneseNamesGenerator = new FableNames(japaneseNamesOptions);

var newName = japaneseNamesGenerator.get();

Examples of generated names:

Totoki, Hakada, Matowa, Hito, Ishisaday, Behi, Okata, Samigawa, Yamamika

See full example at examples/2-japanese-names-example.js.

Non-latin languages

FableNames can both analyze and generate options for non-latin laguages.

To generate non-latin options you need to provide vowels and consonants:

// random options with Estonian letters
var randomOptions = FableNames.generateOptions("aeiouäöüõ", "bcdfghjklmnpqrstvxzw");
var generator = new FableNames(randomOptions); 

To analyze non-latin names you need to provide only vowels:

var russianNames = ["Авдей", "Авксентий", "Агафон", "Александр", "Алексей", ...];
var russianNamesOptions = FableNames.analyze(russianNames, "ауоыиэяюёе");

See full example at examples/4-russian-names-example.js.

Rules and forbidden patterns

To finetune generation of some names you can inject rules verifications and forbidden regexp patterns to avoid generation of fake looking names.

// Example of forbidden patterns for Russian names (names can't start with some letters, some letters can't be followed by others, etc.)
russianNamesOptions.forbiddenPattern = /^[ъьйы]|й.*й|[ауоыиэяюёе]ь|й[ауоыиэяюёе]|йь/i;

// Example verification rule, which is just callback function (it's checking that generated names will be always unique).
romanNamesOptions.verifyRules = (name, options) => usedNames.indexOf(name) === -1;

See full example at examples/4-russian-names-example.js and examples/3-roman-names-example.js.