]>
iEval git - number-phone-ro.git/blob - lib/Number/Phone/RO.pm
1 package Number
::Phone
::RO
;
6 use parent qw
/Number::Phone/;
10 sub AREA_NAMES
(); ## no critic (ProhibitSubroutinePrototypes)
12 our $VERSION = '0.001';
28 return { valid
=> 0 } unless length $nr == 9;
31 $info{geographic
} = $nr =~ /^[23][3-6]/ ?
1 : 0;
32 @info{qw
/fixed_line mobile/} = (1, 0) if $nr =~ /^[23]/;
33 @info{qw
/fixed_line mobile/} = (0, 1) if $nr =~ /^7/;
34 $info{tollfree
} = $nr =~ /^800/ ?
1 : 0;
35 $info{specialrate
} = $nr =~ /^90/ ?
1 : 0;
36 $info{adult
} = 1 if $nr =~ /^906/;
38 my $arealen = $nr =~ /^[23]1/ ?
2 : 3;
39 $info{areacode
} = substr $nr, 0, $arealen;
40 $info{subscriber
} = substr $nr, $arealen;
45 sub _info
{ $cache{${$_[0]}} }
48 my ($class, $nr) = @_;
49 $nr = _normalized
$nr;
50 $cache{$nr} = _analyze_number
$nr;
51 my $self = bless \
$nr, $class;
52 $self->is_valid ?
$self : undef
55 sub is_valid
{ shift->_info->{valid
} }
56 sub is_geographic
{ shift->_info->{geographic
} }
57 sub is_fixed_line
{ shift->_info->{fixed_line
} }
58 sub is_mobile
{ shift->_info->{mobile
} }
59 sub is_tollfree
{ shift->_info->{tollfree
} }
60 sub is_specialrate
{ shift->_info->{specialrate
} }
61 sub is_adult
{ shift->_info->{adult
} }
63 sub country_code
{ 40 }
64 sub regulator
{ 'ANCOM, http://ancom.org.ro'}
66 sub areacode
{ shift->_info->{areacode
} }
67 sub areaname
{ $_[0]->is_geographic ? AREA_NAMES
->{substr $_[0]->areacode, 1} : undef }
68 sub subscriber
{ shift->_info->{subscriber
} }
70 sub format
{ ## no critic (ProhibitBuiltinHomonyms)
75 (substr $self->subscriber, 0, 3),
76 (substr $self->subscriber, 3);
79 sub intra_country_dial_to
{ "0${$_[0]}" }
81 use constant AREA_NAMES
=> {
108 55 => 'Caraș-Severin',
116 63 => 'Bistrița-Năsăud',
132 Number::Phone::RO - Phone number information for Romania (+40)
136 use Number::Phone::RO;
137 my $nr = Number::Phone::RO->new('+40250123456');
138 say $nr->is_geographic; # 1
139 say $nr->is_fixed_line; # 1
140 say $nr->is_mobile; # 0
141 say $nr->is_tollfree; # 0
142 say $nr->is_specialrate; # 0
143 say $nr->areacode; # 250
144 say $nr->areaname; # Vâlcea
145 say $nr->subscriber; # 123456
146 say $nr->format; # +40 250 123 456
150 This module is a work in progress. See the L<TODO> section below.
152 See the L<Number::Phone> documentation for usage information. The
153 following methods from L<Number::Phone> are overridden:
157 =item B<is_geographic>
159 =item B<is_fixed_line>
165 =item B<is_specialrate>
167 =item B<country_code>
173 Returns the name and URL of the regulator, ANCOM.
187 Only long (10 digits) numbers are supported.
189 Should query L<http://portabilitate.ro/> to implement B<operator> and B<operator_ported>.
193 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
195 =head1 COPYRIGHT AND LICENSE
197 Copyright (C) 2015 by Marius Gavrilescu
199 This library is free software; you can redistribute it and/or modify
200 it under the same terms as Perl itself, either Perl version 5.20.2 or,
201 at your option, any later version of Perl 5 you may have available.
This page took 0.048766 seconds and 4 git commands to generate.