line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Geo::SypexGeo::Info; |
2
|
|
|
|
|
|
|
|
3
|
2
|
|
|
2
|
|
10
|
use strict; |
|
2
|
|
|
|
|
5
|
|
|
2
|
|
|
|
|
68
|
|
4
|
2
|
|
|
2
|
|
9
|
use warnings; |
|
2
|
|
|
|
|
3
|
|
|
2
|
|
|
|
|
50
|
|
5
|
2
|
|
|
2
|
|
9
|
use utf8; |
|
2
|
|
|
|
|
4
|
|
|
2
|
|
|
|
|
15
|
|
6
|
2
|
|
|
2
|
|
67
|
use v5.10; |
|
2
|
|
|
|
|
8
|
|
7
|
|
|
|
|
|
|
|
8
|
2
|
|
|
2
|
|
12
|
use Carp qw( croak ); |
|
2
|
|
|
|
|
3
|
|
|
2
|
|
|
|
|
115
|
|
9
|
2
|
|
|
2
|
|
9
|
use Encode; |
|
2
|
|
|
|
|
3
|
|
|
2
|
|
|
|
|
1109
|
|
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
my @COUNTRY_ISO_MAP = ( |
12
|
|
|
|
|
|
|
'', 'ap', 'eu', 'ad', 'ae', 'af', 'ag', 'ai', 'al', 'am', 'cw', 'ao', |
13
|
|
|
|
|
|
|
'aq', 'ar', 'as', 'at', 'au', 'aw', 'az', 'ba', 'bb', 'bd', 'be', 'bf', |
14
|
|
|
|
|
|
|
'bg', 'bh', 'bi', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', |
15
|
|
|
|
|
|
|
'by', 'bz', 'ca', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', |
16
|
|
|
|
|
|
|
'cn', 'co', 'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', |
17
|
|
|
|
|
|
|
'do', 'dz', 'ec', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'fi', 'fj', 'fk', |
18
|
|
|
|
|
|
|
'fm', 'fo', 'fr', 'sx', 'ga', 'gb', 'gd', 'ge', 'gf', 'gh', 'gi', 'gl', |
19
|
|
|
|
|
|
|
'gm', 'gn', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', |
20
|
|
|
|
|
|
|
'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'in', 'io', 'iq', 'ir', 'is', |
21
|
|
|
|
|
|
|
'it', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', |
22
|
|
|
|
|
|
|
'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', |
23
|
|
|
|
|
|
|
'lv', 'ly', 'ma', 'mc', 'md', 'mg', 'mh', 'mk', 'ml', 'mm', 'mn', 'mo', |
24
|
|
|
|
|
|
|
'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz', 'na', |
25
|
|
|
|
|
|
|
'nc', 'ne', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', |
26
|
|
|
|
|
|
|
'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'ps', 'pt', |
27
|
|
|
|
|
|
|
'pw', 'py', 'qa', 're', 'ro', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', |
28
|
|
|
|
|
|
|
'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'st', 'sv', |
29
|
|
|
|
|
|
|
'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj', 'tk', 'tm', 'tn', 'to', |
30
|
|
|
|
|
|
|
'tl', 'tr', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'um', 'us', 'uy', 'uz', |
31
|
|
|
|
|
|
|
'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'rs', |
32
|
|
|
|
|
|
|
'za', 'zm', 'me', 'zw', 'a1', 'xk', 'o1', 'ax', 'gg', 'im', 'je', 'bl', |
33
|
|
|
|
|
|
|
'mf', 'bq', 'ss' |
34
|
|
|
|
|
|
|
); |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
sub new { |
37
|
1
|
|
|
1
|
0
|
7
|
my ( $class, $info, $lang ) = @_; |
38
|
1
|
|
|
|
|
2
|
my $self = {}; |
39
|
1
|
|
|
|
|
3
|
$self->{lang} = $lang; |
40
|
1
|
|
|
|
|
3
|
$self->{info} = $info; |
41
|
1
|
|
|
|
|
1
|
bless $self, $class; |
42
|
1
|
|
|
|
|
7
|
return $self; |
43
|
|
|
|
|
|
|
} |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
sub city { |
46
|
1
|
|
|
1
|
0
|
6
|
my __PACKAGE__ $self = shift; |
47
|
1
|
|
50
|
|
|
8
|
my $info = $self->{info} || return; |
48
|
1
|
|
|
|
|
2
|
my $lang = $self->{lang}; |
49
|
|
|
|
|
|
|
|
50
|
1
|
|
|
|
|
2
|
my $city; |
51
|
1
|
50
|
33
|
|
|
5
|
if ( $lang && $lang eq 'en' ) { |
52
|
0
|
|
|
|
|
0
|
$city = $info->[6]; |
53
|
|
|
|
|
|
|
} |
54
|
|
|
|
|
|
|
else { |
55
|
1
|
|
|
|
|
2
|
$city = $info->[5]; |
56
|
|
|
|
|
|
|
} |
57
|
1
|
50
|
|
|
|
3
|
return unless $city; |
58
|
|
|
|
|
|
|
|
59
|
1
|
|
|
|
|
4
|
return decode_utf8($city); |
60
|
|
|
|
|
|
|
} |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
sub country { |
63
|
1
|
|
|
1
|
0
|
938
|
my __PACKAGE__ $self = shift; |
64
|
1
|
|
50
|
|
|
5
|
my $info = $self->{info} || return; |
65
|
|
|
|
|
|
|
|
66
|
1
|
|
|
|
|
2
|
my $country; |
67
|
1
|
50
|
|
|
|
5
|
if ( $info->[1] =~ /\D/ ) { |
68
|
0
|
|
|
|
|
0
|
$country = $info->[1]; |
69
|
|
|
|
|
|
|
} |
70
|
|
|
|
|
|
|
else { |
71
|
1
|
|
|
|
|
3
|
$country = $COUNTRY_ISO_MAP[ $info->[1] ]; |
72
|
|
|
|
|
|
|
} |
73
|
|
|
|
|
|
|
|
74
|
1
|
|
|
|
|
3
|
return $country; |
75
|
|
|
|
|
|
|
} |
76
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
sub coordinates { |
78
|
0
|
|
|
0
|
0
|
|
my __PACKAGE__ $self = shift; |
79
|
0
|
|
0
|
|
|
|
my $info = $self->{info} || return; |
80
|
0
|
|
|
|
|
|
return ( $info->[3], $info->[4] ); |
81
|
|
|
|
|
|
|
} |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
1; |