|
our $VERSION = 1.20250323211837;
my $formatters = [
{
'format' => '$1-$2' ,
'leading_digits' => '
[2-4]|
50|
6[09]|
7[0-24-69]|
8[05]
',
'pattern' => '(\\d{2})(\\d{3})'
},
{
'format' => '$1 $2' ,
'pattern' => '(\\d{4})(\\d{3})'
},
{
'format' => '$1 $2' ,
'leading_digits' => '[5-9]' ,
'pattern' => '(\\d{3})(\\d{4})'
}
];
my $validators = {
'fixed_line' => '
(?:
2\\d|
3[0-8]|
4[0-4]|
50|
6[09]|
7[0-24-69]|
8[05]
)\\d{3}
',
'geographic' => '
(?:
2\\d|
3[0-8]|
4[0-4]|
50|
6[09]|
7[0-24-69]|
8[05]
)\\d{3}
',
'mobile' => '
(?:
5(?:
4[0-5]|
5[4-6]
)|
6(?:
[09]\\d|
3[02]|
8[15-9]
)|
(?:
7\\d|
8[46-9]
)\\d|
999
)\\d{4}
',
'pager' => '' ,
'personal_number' => '' ,
'specialrate' => '' ,
'toll_free' => '0800\\d{3}' ,
'voip' => '55[0-37-9]\\d{4}'
};
my %areanames = ();
$areanames {en} = { "67672" , "Vava\’u" ,
"67632" , "Muʻa" ,
"67669" , "Ha\’apai" ,
"67660" , "Ha\’apai" ,
"67671" , "Vava\’u" ,
"67631" , "Muʻa" ,
"67685" , "Niuas" ,
"67679" , "Vava\’u" ,
"67629" , "Pea" ,
"67680" , "Niuas" ,
"67634" , "Kolonga" ,
"67674" , "Vava\’u" ,
"67633" , "Kolonga" ,
"67630" , "Pea" ,
"67670" , "Vava\’u" ,
"67675" , "Vava\’u" ,
"67635" , "Nakolo" ,
"67641" , "Masilamea" ,
"67642" , "Masilamea" ,
"67643" , "Matangiake" ,
"67640" , "Kolovai" ,
"67650" , "\‘Eua" ,
"67638" , "Vaini" ,
"67637" , "Vaini" ,
"67636" , "Nakolo" ,
"67676" , "Vava\’u" ,
"6762" , "Nuku\'alofa" ,};
my $timezones = {
'' => [
'Pacific/Tongatapu'
]
};
sub new {
my $class = shift ;
my $number = shift ;
$number =~ s/(^\+676|\D)//g;
my $self = bless ({ country_code => '676' , number => $number , formatters => $formatters , validators => $validators , timezones => $timezones , areanames => \ %areanames }, $class );
return $self ->is_valid() ? $self : undef ;
}
1;
|