File Coverage

blib/lib/Locale/TextDomain/OO/Plugin/Language/LanguageOfLanguages.pm
Criterion Covered Total %
statement 31 34 91.1
branch 2 4 50.0
condition n/a
subroutine 8 8 100.0
pod n/a
total 41 46 89.1


line stmt bran cond sub pod time code
1             package Locale::TextDomain::OO::Plugin::Language::LanguageOfLanguages; ## no critic (Tidy Code)
2            
3 2     2   3540 use strict;
  2         6  
  2         54  
4 2     2   10 use warnings;
  2         4  
  2         45  
5 2     2   11 use Locale::TextDomain::OO::Singleton::Lexicon;
  2         4  
  2         47  
6 2     2   10 use Locale::TextDomain::OO::Util::JoinSplitLexiconKeys;
  2         4  
  2         34  
7 2     2   9 use Moo::Role;
  2         4  
  2         11  
8 2     2   652 use MooX::Types::MooseLike::Base qw(Str ArrayRef);
  2         5  
  2         97  
9 2     2   62 use namespace::autoclean;
  2         5  
  2         11  
10            
11             our $VERSION = '1.014';
12            
13             with qw(
14             Locale::TextDomain::OO::Role::Logger
15             );
16            
17             requires qw(
18             language
19             category
20             domain
21             project
22             );
23            
24             has languages => (
25             is => 'rw',
26             isa => ArrayRef[Str],
27             trigger => 1,
28             lazy => 1,
29             default => sub { [] },
30             );
31            
32             sub _trigger_languages { ## no critic (UnusedPrivateSubroutines)
33 2     2   3930 my ($self, $languages) = @_;
34            
35 2         9 my $lexicon = Locale::TextDomain::OO::Singleton::Lexicon->instance->data;
36 2         20 for my $language ( @{$languages} ) {
  2         6  
37 7         12 for my $key ( keys %{$lexicon} ) {
  7         19  
38 8         24 my $lexicon_key = Locale::TextDomain::OO::Util::JoinSplitLexiconKeys
39             ->instance
40             ->join_lexicon_key({
41             language => lc $language,
42             category => $self->category,
43             domain => $self->domain,
44             project => $self->project,
45             });
46 8 100       673 if ( $key eq $lexicon_key ) {
47 2         37 $self->language( lc $language );
48 2         103 return;
49             }
50             }
51             }
52 0           $self->language('i-default');
53 0 0         $self->logger
54             and $self->logger->(
55             'Fallback language "i-default" selected.',
56             {
57             object => $self,
58             type => 'warn',
59             event => 'language,selection,fallback',
60             },
61             );
62            
63 0           return;
64             }
65            
66             1;
67            
68             __END__