NAME

Lingua::famibeib::NameGenerator - module to generate proper famibeib names

VERSION

version v0.04

SYNOPSIS

use Lingua::famibeib::NameGenerator;

my Lingua::famibeib::Word $name = Lingua::famibeib::NameGenerator->generate(...);

(since v0.04)

This package is used to generate proper famibeib names (ta-).

METHODS

generate

my Lingua::famibeib::Word $name = Lingua::famibeib::NameGenerator->generate(%opts);

Generates a proper name based on the passed options.

This method tries to match the output to the input as best as it can. Hence it is slower than just a random string generator.

Unless random (see below) is passed, the output is also fully stable for any given version of this module. This means, that if you call this method again with the same inputs it will result in the same output (as long as the same version is used).

It returns the name as a Lingua::famibeib::Word.

The following (all optional) options are supported:

counter

The counter for the given request (if any). This can be used together with last to break loops of repeating names when generating multiple names.

Generally one would set this to 0 for the first request, with last being undef. For the second request this would be 1, and last would be the result of the first call and so on.

email

An e-mail address of the person.

family

The name of the family of the person. Can be a plain name, or a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple.

last

The result of the last call to this method. This can be used to generate more results for the same inputs to allow the user to select one.

See also counter.

length

The length in mora to generate. This value is the default for maxlength, and minlength.

maxlength

The maximum length in mora to use for generated names.

minlength

The minimum length in mora to use for generated names.

name

A name for the entity in any other language. This can be used if none of the more specific options fit: email, nickname, realname, username. Can be a plain name, or a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple.

nickname

A nick name, any name the entity is called by. Can be a plain name, or a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple.

random

If set to a true-ish value this method will add some (low quality) random value to the generator. This is useful when no information about the entity is known. This also means that the results will not be the same for two calls with the same parameters.

See also seed.

realname

The real name (legal name) of a entity. Can be a plain name, or a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple.

seed

A seed that is added to the generator. It can be used as an alternatives to random when a result not bound to the entity is wanted (or no such data is available), but still a deterministic result is wanted.

If this is a floating point value it is converted to a string in some way. Different versions of this module and/or of perl, or the machine this runs on can result in different results.

sex_or_gender

The sex or gender of the entity. Should be a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple. This method might try to match sexes/genders internally. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

species

The species of the entity. Should be a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple. This method might try to match species internally. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

subjecttype

The primary subject-type (has-type) of the entity. This should be a Data::Identifier or any Data::Identifier::Interface::Simple. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

tag

The tag of the entity. This should be a Data::Identifier or any Data::Identifier::Interface::Simple. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

tribe

The tribe of the entity. Takes the same values as family.

user

The user object for this entity. This should be a Data::Identifier or any Data::Identifier::Interface::Simple. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

username

The username for this entity. Can be a plain name, or a Lingua::famibeib::Word or Data::Identifier or any Data::Identifier::Interface::Simple. Note that Data::TagDB::Tag implements Data::Identifier::Interface::Simple and can therefore be used.

AUTHOR

Philipp Schafft <lion@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2025-2026 by Philipp Schafft <lion@cpan.org>.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)