Branch Coverage

File:blib/lib/CGI/Lingua.pm
Coverage:43.7%

line%coveragebranch
16850TFif (not defined $class) { }
50TFelsif (ref $class) { }
1690TFif ($params)
1710TFif (my $logger = $params->{'logger'})
1810TFif defined $params->{'supported'}
18850TFif (defined $params->{'logger'})
18950TFunless (&Scalar::Util::blessed($params->{'logger'}) and $params->{'logger'}->can("warn") and $params->{'logger'}->can("info") and $params->{'logger'}->can("error"))
199100TFunless (defined $params->{'supported'})
20050TFif (my $logger = $params->{'logger'})
206100TFif (ref $params->{'supported'}) { }
50TFelsif (length $params->{'supported'} < 2 or length $params->{'supported'} > 5) { }
20750TFif (ref $params->{'supported'} ne "ARRAY")
21750TFif ($cache and $ENV{'REMOTE_ADDR'})
22050TFif ($info and $l = $info->lang) { }
50TFelsif ($l = $class->_what_language) { }
22550TFif (ref($params->{'supported'} eq 'ARRAY')) { }
23350TFif (my $rc = $cache->get($key))
2470TFif ($rc->{'_what_language'} || $rc->{'_rlanguage'} and $info and $info->lang)
273100TFref $params->{'supported'} ? :
27950TFif (defined $^V and $^V ge "v5.14.0")
28050TFif ${^GLOBAL_PHASE} eq "DESTRUCT"
282100TFunless ($ENV{'REMOTE_ADDR'})
28650TFunless ref $self
289100TFunless $cache
29250TFif (my $l = $self->_what_language)
29650TFif $cache->get($key)
351100TFunless ($self->{'_slanguage'})
396100TFunless ($self->{'_slanguage'})
417100TFunless ($self->{'_slanguage'})
446100TFunless ($self->{'_slanguage'})
466100TFunless ($self->{'_rlanguage'})
48950TFif (defined $http_accept_language)
49250TFif ($http_accept_language eq "en-uk")
4980TFif (not $_[0] =~ /^Use of uninitialized value/)
505100TFif ($l and $http_accept_language =~ /-/ and not $http_accept_language =~ qr/$l/i)
514100TFunless ($l)
525100TFif ($i18n->accepts($1, $self->{'_supported'}))
532100TFunless ($l)
536100TFif $possible =~ /..\-../
539100TFif ($i18n->accepts($possible, $self->{'_supported'}))
548100TFif ($l) { }
100TFelsif ($http_accept_language =~ /;/) { }
551100TFif (not $l =~ /^..-..$/) { }
50TFelsif ($l =~ /(.+)-(..)$/) { }
55350TFif ($self->{'_slanguage'})
564100TFif ($http_accept_language =~ /..-(..)$/) { }
50TFelsif ($http_accept_language =~ /..-([a-z]{2,3})$/i) { }
567100TFunless defined $requested_sublanguage
5720TFif ($@)
576100TFif ($sl) { }
100TFelsif ($requested_sublanguage) { }
58250TFif (my $c = $self->_code2countryname($requested_sublanguage)) { }
59650TFif ($accepts)
59950TFif ($accepts =~ /\-/) { }
6030TFif ($self->{'_cache'})
6060TFif ($from_cache) { }
6120TFif ($self->{'_slanguage'})
6130TFif ($variety eq "uk")
6200TFif (defined(my $c = $self->_code2countryname($variety)))
6250TFif ($self->{'_sublanguage'})
6300TFunless ($from_cache)
64150TFif ($accepts)
64750TFif ($variety =~ /[a-z]{2,3}/ and not defined $self->{'_sublanguage'})
65150TFif ($variety eq "uk")
660100TFif ($self->{'_cache'})
663100TFif (defined $from_cache) { }
67750TFif (defined $results[0]) { }
68550TFif ($@ or not defined $language_name) { }
6860TFif $@
695100TFif ($self->{'_cache'} and not defined $from_cache)
70150TFif (defined $self->{'_sublanguage'})
71350TFif ($self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown")
7140TFif ($self->{'_rlanguage'} eq "Unknown")
7170TFif ($self->{'_rlanguage'})
7180TFif ($l = $self->_code2language($self->{'_rlanguage'}))
729100TFif (!$self->{'_rlanguage'} || $self->{'_rlanguage'} eq 'Unknown' and length $http_accept_language == 2 || $http_accept_language =~ /^..-..$/)
73350TFunless ($self->{'_rlanguage'})
74050TFif ($self->{'_dont_use_ip'})
749100TFif (not defined $country and my $c = $self->_what_language)
75050TFif ($c =~ /^(..)_(..)/) { }
100TFelsif ($c =~ /^(..)$/) { }
757100TFif (defined $country)
76250TFif ($self->{'_cache'})
76750TFif ($from_cache) { }
77250TFif ($l)
7740TFif (defined $l)
7770TFif ($language_name)
78450TFif ($language_name)
7850TFif (not defined $self->{'_rlanguage'} or $self->{'_rlanguage'} eq "Unknown")
7880TFunless (exists $self->{'_slanguage'} and $self->{'_slanguage'} ne "Unknown")
7930TFif ($language_name and $language_code2 and not defined $http_accept_language) { }
8010TFunless ($code)
8020TFif ($http_accept_language and $http_accept_language ne $self->{'_rlanguage'})
8070TFunless ($code)
8100TFif ($self->{'_rlanguage'} =~ /(.+)\s\(.+/)
8110TFif (not defined $http_accept_language or $1 ne $self->{'_rlanguage'})
8170TFunless ($code)
8250TFif ($code)
8270TFif ($self->{'_slanguage'}) { }
8360TFif (not defined $self->{'_slanguage_code_alpha2'}) { }
0TFelsif (not defined $from_cache and $self->{'_cache'} and defined $self->{'_slanguage_code_alpha2'}) { }
874100TFif (/^(.+)-/) { }
87650TFif (exists $base_languages{$language_string})
886100TFif (ref $self)
888100TFif ($self->{'_what_language'})
89250TFif (my $info = $self->{'_info'})
8930TFif (my $rc = $info->lang)
901100TFif (my $rc = $ENV{'HTTP_ACCEPT_LANGUAGE'})
902100TFif (ref $self)
90850TFif (defined $ENV{'LANG'})
9110TFif (ref $self)
93750TFif ($self->{'_country'})
94350TFif (defined $ENV{'GEOIP_COUNTRY_CODE'})
947100TFif ($ENV{'HTTP_CF_IPCOUNTRY'} and $ENV{'HTTP_CF_IPCOUNTRY'} ne "XX")
955100TFunless defined $ip
96050TFunless (is_ipv4($ip))
9620TFif ($ip eq '::1') { }
0TFelsif (not is_ipv6($ip)) { }
97250TFif (is_private_ip($ip))
97650TFif (is_loopback_ip($ip))
98150TFif ($self->{'_cache'})
9830TFif (defined $self->{'_country'})
9840TFif (not $self->{'_country'} =~ /\D/) { }
99650TFif ($self->{'_have_ipcountry'} == -1)
99750TFif (eval {         do {         require IP::Country } }) { }
100750TFif ($self->{'_have_ipcountry'})
10090TFif ($self->{'_country'}) { }
0TFelsif (is_ipv4($ip)) { }
101650TFunless (defined $self->{'_country'})
101750TFif ($self->{'_have_geoip'} == -1)
102050TFif ($self->{'_have_geoip'} == 1)
102650TFif (not defined $self->{'_country'} and $ip ne "45.128.139.41")
10270TFif ($self->{'_have_geoipfree'} == -1)
10310TFif ($@) { }
10390TFif ($self->{'_have_geoipfree'} == 1)
10400TFif (my $country = ($self->{'_geoipfree'}->LookUp($ip))[0])
104650TFif ($self->{'_country'} and $self->{'_country'} eq "eu")
104950TFif (not $self->{'_country'} and eval {         do {         require LWP::Simple::WithCache; require JSON::Parse } })
10560TFif (my $data = LWP::Simple::WithCache::get("http://www.geoplugin.net/json.gp?ip=$ip"))
106050TFunless ($self->{'_country'})
107550TFunless ($@ or not defined $whois or ref $whois ne "HASH")
107650TFif (defined $whois->{'Country'}) { }
50TFelsif (defined $whois->{'country'}) { }
108150TFif ($self->{'_country'})
108250TFif ($self->{'_country'} eq 'EU') { }
50TFelsif ($self->{'_country'} eq 'US' and defined $whois->{'StateProv'} and $whois->{'StateProv'} eq 'PR') { }
109150TFif ($self->{'_country'}) { }
11030TFunless ($@)
110950TFif ($self->{'_country'})
111250TFif ($self->{'_country'} =~ /^(..)\s*#/)
112050TFif ($self->{'_country'})
112150TFif (not $self->{'_country'} =~ /\D/) { }
112650TFif ($self->{'_country'} eq 'hk') { }
50TFelsif ($self->{'_country'} eq 'eu') { }
11350TFif (subnet_matcher('185.10.104.0/22')->($ip)) { }
114650TFif (not $self->{'_country'} =~ /\D/) { }
50TFelsif ($self->{'_cache'}) { }
116550TFif ($^O eq 'MSWin32' and -r 'c:/GeoIP/GeoIP.dat' or (-r '/usr/local/share/GeoIP/GeoIP.dat' or -r '/usr/share/GeoIP/GeoIP.dat')) { }
11700TFif ($@) { }
11750TFif (-r '/usr/share/GeoIP/GeoIP.dat') { }
120750TFif ($self->{'_locale'})
121550TFif (defined $agent and $agent =~ /\((.+)\)/)
122150TFif ($candidate =~ /^[a-zA-Z]{2}-([a-zA-Z]{2})$/)
12230TFif (my $c = $self->_code2country($1))
123150TFif (eval {         do {         require HTTP::BrowserDetect } })
123550TFif ($browser and $browser->country and my $c = $self->_code2country($browser->country))
12450TFif ($country)
12530TFunless ($@)
12540TFif ($c)
12620TFif (defined $ENV{'GEOIP_COUNTRY_CODE'})
12650TFif ($c)
12870TFif ($self->{'_timezone'})
12920TFif (my $ip = $ENV{'REMOTE_ADDR'}) { }
12930TFif ($self->{'_have_geoip'} == -1)
12960TFif ($self->{'_have_geoip'} == 1)
13010TFunless ($self->{'_timezone'})
13020TFif (eval {         do {         require LWP::Simple::WithCache; require JSON::Parse } }) { }
0TFelsif (eval {         do {         require LWP::Simple; require JSON::Parse } }) { }
13080TFif (my $data = LWP::Simple::WithCache::get("http://ip-api.com/json/$ip"))
13170TFif (my $data = LWP::Simple::get("http://ip-api.com/json/$ip"))
13210TFif (my $logger = $self->{'logger'})
13290TFif (open my $fin, '<', '/etc/timezone') { }
13380TFunless (defined $self->{'_timezone'})
134950TFunless $code
1350100TFif (defined $self->{'_country'}) { }
1355100TFunless ($self->{'_cache'})
1358100TFif (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2language:$code"))
137150TFunless $code
1372100TFif ($self->{'_country'}) { }
137850TFif (not $_[0] =~ /No result found in country table/)
139350TFunless $code
1395100TFunless ($self->{'_cache'})
139750TFif (defined $country)
1402100TFif (my $from_cache = $self->{'_cache'}->get('CGI::Lingua' . ":code2countryname:$code"))
140650TFif (my $country = $self->_code2country($code))
141950TFif (ref $self and scalar @messages)
142550TFif (my $logger = $self->{'logger'})
14550TFif (defined $self->{'logger'}) { }