Locale-TextDomain-OO-Util
view release on metacpan or search on metacpan
Revision history for Perl extension Locale::TextDomain:OO::Util.
4.002 Fri Mar 15 22:39:33 2019
- added $Test::Differences::NoDeparse = 1;
to have equal behaviour
https://rt.cpan.org/Ticket/Display.html?id=128843
4.001 Mon Jun 4 16:54:05 2018
- removed module Safe (parse formula and break in case of wrong)
- also removed related method patch_safe_module
- depends on Perl 5.010 now
3.008 Wed Jul 19 12:48:01 2017
- remove Module::Build from dist dependencies (2nd try)
3.007 Sun Jul 16 10:52:11 2017
- fixed dependency (1st try)
https://rt.cpan.org/Ticket/Display.html?id=122436
lib/Locale/TextDomain/OO/Util/ExtractHeader.pm view on Meta::CPAN
use Carp qw(confess);
use English qw(-no_match_vars $EVAL_ERROR);
use namespace::autoclean;
our $VERSION = '4.001';
sub instance {
return __PACKAGE__;
}
my $really_compile_formula = sub {
my ($formula) = @_;
## no critic (ComplexRegexes EnumeratedClasses EscapedMetacharacters)
$formula =~ m{
\A \s*+ (?&expr) \z
(?(DEFINE)
(?<term>
(?>
(?> ~ | ! (?! = ) | - (?! [\-=] ) | \+ (?! [+=] ) ) \s*+
)*+
(?>
[1-9] [0-9]*+ \b
|
lib/Locale/TextDomain/OO/Util/ExtractHeader.pm view on Meta::CPAN
/ (?! [/*=] )
|
[\^*%] (?! = )
)
\s*+
(?&term)
)*+
)
)
}xms
or confess "Invalid formula: $formula";
## use critic (ComplexRegexes EnumeratedClasses EscapedMetacharacters)
$formula =~ s{ \b n \b }{\$n}xmsg;
my $sub = eval "sub { my \$n = shift; use integer; 0 + ($formula) }" ## no critic (StringyEval)
or confess "Internal error: $formula: $EVAL_ERROR";
return $sub;
};
my %compiled_formula_cache;
my $compile_formula = sub {
my $formula = shift;
return $compiled_formula_cache{$formula} ||= $really_compile_formula->($formula);
};
sub extract_header_msgstr {
my ( undef, $header_msgstr ) = @_;
defined $header_msgstr
or confess 'Header is not defined';
## no critic (ComplexRegexes EnumeratedClasses)
my ( $plural_forms, $nplurals, $plural ) = $header_msgstr =~ m{
^
lib/Locale/TextDomain/OO/Util/ExtractHeader.pm view on Meta::CPAN
# ToDo: remove because multiplural was a too complicated idea
## no critic (EnumeratedClasses)
my ( $multiplural_nplurals ) = $header_msgstr =~ m{
^ X-Multiplural-Nplurals: [ ]* ( [0-9]+ ) [ ]* $
}xms;
## use critic (EnumeratedClasses)
return {(
nplurals => 0 + $nplurals,
plural => $plural,
plural_code => $compile_formula->($plural),
charset => $charset,
! $lexicon_class ? () : (
lexicon_class => $lexicon_class,
),
# ToDo: remove because multiplural was a too complicated idea
! $multiplural_nplurals ? () : (
multiplural_nplurals => $multiplural_nplurals,
),
)};
}
lib/Locale/TextDomain/OO/Util/ExtractHeader.pm view on Meta::CPAN
See SYNOPSIS. This method returns a value you can call C<extract_header_msgstr>
on.
=head2 method extract_header_msgstr
$hash_ref = $extractor->extract_header_msgstr($header_msgstr);
That hash_ref contains:
nplurals => $count_of_plural_forms,
plural => $the_original_formula,
plural_code => $code_ref__to_select_the_right_plural_form,
charset => $charset,
lexicon_class => 'from X-Lexicon-Class',
=head1 EXAMPLE
See the F<*.pl> files in the F<example> directory in this distribution.
=head1 DIAGNOSTICS
( run in 0.243 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )