Lingua::Conlang::Numbers - Convert numbers into words in various constructed languages


Lingua-Conlang-Numbers documentation Contained in the Lingua-Conlang-Numbers distribution.

Index


Code Index:

NAME

Top

Lingua::Conlang::Numbers - Convert numbers into words in various constructed languages

VERSION

Top

This document describes Lingua::Conlang::Numbers version 0.02.

SYNOPSIS

Top

    use Lingua::Conlang::Numbers qw(
        num2conlang num2conlang_ordinal num2conlang_languages
    );

WARNING

Top

The interface for the Lingua::Conlang::Numbers module may change in the future, but will likely remain the same for the individual language modules included in the Lingua-Conlang-Numbers distribution.

DESCRIPTION

Top

The Lingua-Conlang-Numbers distribution includes modules for converting numbers into words in various constructed languages, also known as planned languages or artificial languages.

The Lingua::Conlang::Numbers module provides a common interface to all of the included modules without the need to use each one.

FUNCTIONS

Top

The following functions are provided but are not exported by default.

num2conlang STRING, EXPR

If STRING is a supported language, EXPR is passed to the num2xx function from the corresponding module, which will handle the return value.

    num2conlang(eo => 3.141593);

num2conlang_ordinal STRING, EXPR

If STRING is a supported language, EXPR is passed to the num2xx_ordinal function from the corresponding module, which will handle the return value.

    num2conlang_ordinal(jbo => 5);

num2conlang_languages

Returns the list of supported language strings in list context and the number of supported languages in scalar context.

The STRING argument for num2conlang or num2conlang_ordinal may be the case-insensitive language name with optional underscores (e.g., TokiPona, tokipona, toki_pona) or the two-letter ISO 639-1 codes and three-letter ISO 639-3 codes when available (e.g., eo, epo, EO, EPO).

The :all tag can be used to import all functions.

    use Lingua::Conlang::Numbers qw( :all );

MODULES

Top

See the individual language modules for details on supported numbers and provided output.

* Lingua::EO::Numbers - Esperanto (eo, epo)
* Lingua::JBO::Numbers - Lojban (jbo)
* Lingua::TokiPona::Numbers - Toki Pona

TODO

Top

Add support for additional constructed languages including, but not limited to: Ido, Interlingua, Klingon, Latino sine Flexione, Loglan, Occidental, Quenya, and Volapük.

SEE ALSO

Top

Lingua::Any::Numbers

AUTHOR

Top

Nick Patch <n@atemoya.net>

COPYRIGHT AND LICENSE

Top


Lingua-Conlang-Numbers documentation Contained in the Lingua-Conlang-Numbers distribution.

package Lingua::Conlang::Numbers;

use 5.008_001;
use strict;
use warnings;
use Lingua::EO::Numbers       qw( :all );
use Lingua::JBO::Numbers      qw( :all );
use Lingua::TokiPona::Numbers qw( :all );

use base qw( Exporter );
our @EXPORT_OK = qw( num2conlang num2conlang_ordinal num2conlang_languages );
our %EXPORT_TAGS = ( all => \@EXPORT_OK );

our $VERSION = '0.02';

my @languages = qw< eo jbo tokipona >;
my %aliases = (
    esperanto => 'eo',
    lojban    => 'jbo',
);

sub num2conlang           { _num2conlang(q{},         @_) }
sub num2conlang_ordinal   { _num2conlang(q{_ordinal}, @_) }
sub num2conlang_languages { @languages                    }

sub _num2conlang {
    # @_ will be used with goto
    my ($suffix, $language, $number) = (shift, shift, @_);

    return unless $language;
    $language = lc $language;
    $language =~ tr{ _}{}d;

    if (grep { $_ eq $language } @languages) {
        goto &{ 'num2' . $language . $suffix };
    }
    elsif ( exists $aliases{$language} ) {
        goto &{ 'num2' . $aliases{$language} . $suffix };
    }
    else {
        return;
    }
}

1;

__END__