Locale-TextDomain-OO-Util
view release on metacpan or search on metacpan
123456789101112131415161718Revision 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
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
)
lib/Locale/TextDomain/OO/Util/ExtractHeader.pm view on Meta::CPAN
78910111213141516171819202122232425262728293031use
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
6465666768697071727374757677787980818283848586878889909192939495969798
/ (?! [/*=] )
|
[\^*%] (?! = )
)
\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
124125126127128129130131132133134135136137138139140141142143144
# 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
175176177178179180181182183184185186187188189190191192193194See 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.468 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )