Lingua-EN-Inflexion
view release on metacpan or search on metacpan
lib/Lingua/EN/Inflexion/Term.pm view on Meta::CPAN
return Lingua::EN::Inflexion::Indefinite::prepend_indefinite_article($self->singular);
}
else {
return "$count " . $self->plural;
}
}
# Conversions to ordinal and cardinal numbers (with module loaded on demand)...
my $num2word = sub {
state $load = require Lingua::EN::Nums2Words && Lingua::EN::Nums2Words::set_case('lower');
Lingua::EN::Nums2Words::num2word(@_);
};
my $num2word_short_ordinal = sub {
state $load = require Lingua::EN::Nums2Words && Lingua::EN::Nums2Words::set_case('lower');
Lingua::EN::Nums2Words::num2word_short_ordinal(@_);
};
my $num2word_ordinal = sub {
state $load = require Lingua::EN::Nums2Words && Lingua::EN::Nums2Words::set_case('lower');
Lingua::EN::Nums2Words::num2word_ordinal(@_);
};
# These words may need an "and" before them...
my $LAST_WORD = qr{
one | two | three | four | five | six | seven | eight | nine | ten
| eleven | twelve | teen | ty
| first | second | third | [rfxnhe]th
}x;
# These words may need an "and" after them...
my $POWER_WORD = qr{
hundred | thousand | \S+illion
}x;
sub cardinal {
my $value = $term_of{ shift() };
my $max_trans = shift();
# Load the necessary module, and compensate for its persnicketiness...
state $load = require Lingua::EN::Words2Nums;
local $SIG{__WARN__} = sub{};
# Make sure we have a number...
$value = Lingua::EN::Words2Nums::words2nums($value) // $value;
# If it's above threshold, return it as a number...
return $value
if defined $max_trans && $value >= $max_trans;
# Otherwise, convert it to words...
lib/Lingua/EN/Inflexion/Term.pm view on Meta::CPAN
}
return $words;
}
sub ordinal {
my $value = $term_of{ shift() };
my $max_trans = shift();
# Load the necessary module, and compensate for its persnicketiness...
state $load = require Lingua::EN::Words2Nums;
local $SIG{__WARN__} = sub{};
# Make sure we have a number...
$value = Lingua::EN::Words2Nums::words2nums($value) // $value;
# If it's above threshold, return it as a number...
return $num2word_short_ordinal->($value)
if defined $max_trans && $value >= $max_trans;
# Otherwise, convert it to words...
( run in 0.841 second using v1.01-cache-2.11-cpan-0d8aa00de5b )