Changeset 953

Show
Ignore:
Timestamp:
10/09/03 15:00:58
Author:
tanimoto
Message:

0.04 Sun Oct 5 04:15:32 JST 2003

        • Added is_docomo function
        • Added is_vodafone function
        • Added is_au function
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Mail-Address-MobileJp/trunk/Changes

    r908 r953  
    11Revision history for Perl extension Mail::Address::MobileJp. 
     2 
     30.04  Sun Oct 5 04:15:32 JST 2003 
     4        * Added is_docomo function 
     5        * Added is_vodafone function 
     6        * Added is_au function 
    27 
    380.03  Tue Jul 15 17:44:44 JST 2003 
  • Mail-Address-MobileJp/trunk/README

    r341 r953  
    2525          $bool = is_mobile_jp($email); 
    2626 
    27         returns whether `$email' is a mobile email address or not. `$email' 
    2827        can be an email string or Mail::Address object. 
     28 
     29    is_imode 
     30          $bool = is_imode($email); 
     31 
     32        returns whether $email is a i-mode email address or 
     33        not. $email can be an email string or Mail::Address 
     34        object. 
     35 
     36    is_vodafone 
     37          $bool = is_vodafone($email); 
     38 
     39        returns whether $email is a vodafone(j-sky) email 
     40        address or not. $email can be an email string or 
     41        Mail::Address object. 
     42 
     43    is_ezweb 
     44          $bool = is_ezweb($email); 
     45 
     46        returns whether $email is a ezweb email address or 
     47        not. $email can be an email string or Mail::Address 
     48        object. 
    2949 
    3050AUTHOR 
  • Mail-Address-MobileJp/trunk/lib/Mail/Address/MobileJp.pm

    r908 r953  
    33use strict; 
    44use vars qw($VERSION); 
    5 $VERSION = '0.03'; 
     5$VERSION = '0.04'; 
    66 
    77BEGIN { 
    88    require Exporter; 
    99    @Mail::Address::MobileJp::ISA    = qw(Exporter); 
    10     @Mail::Address::MobileJp::EXPORT = qw(is_mobile_jp); 
     10    @Mail::Address::MobileJp::EXPORT = qw(is_mobile_jp is_imode is_vodafone is_ezweb); 
    1111} 
    1212 
    1313# This regex is generated using http://www.mag2.com/faq/mobile.htm 
    1414 
    15 my $regex = qr@^(?: 
    16 docomo\.ne\.jp| 
    17 mnx\.ne\.jp| 
    18 .*\.mnx\.ne\.jp| 
    19 ezweb\.ne\.jp| 
    20 .*\.ezweb\.ne\.jp| 
     15my $regex_mobile = qr@^(?: 
    2116dct\.dion\.ne\.jp| 
    2217tct\.dion\.ne\.jp| 
     
    2722qct\.dion\.ne\.jp| 
    2823oct\.dion\.ne\.jp| 
    29 ez.\.ido\.ne\.jp| 
    30 cmail\.ido\.ne\.jp| 
    3124email\.sky\.tdp\.ne\.jp| 
    3225email\.sky\.kdp\.ne\.jp| 
    3326email\.sky\.cdp\.ne\.jp| 
    34 jp\-d\.ne\.jp| 
    35 jp\-h\.ne\.jp| 
    36 jp\-t\.ne\.jp| 
    37 jp\-c\.ne\.jp| 
    38 jp\-r\.ne\.jp| 
    39 jp\-k\.ne\.jp| 
    40 jp\-n\.ne\.jp| 
    41 jp\-s\.ne\.jp| 
    42 jp\-q\.ne\.jp| 
    4327sky\.tu\-ka\.ne\.jp| 
    4428cara\.tu\-ka\.ne\.jp| 
     
    6852emcm\.ne\.jp| 
    6953p1\.foomoon\.com| 
    70 .*\.i\-get\.ne\.jp| 
     54mnx\.ne\.jp| 
     55.*\.mnx\.ne\.jp| 
     56ez.\.ido\.ne\.jp| 
     57cmail\.ido\.ne\.jp| 
     58.*\.i\-get\.ne\.jp 
     59)$@x; # end of qr@@ 
     60 
     61my $regex_imode = qr@^(?: 
     62docomo\.ne\.jp 
     63)$@x; # end of qr@@ 
     64 
     65my $regex_vodafone = qr@^(?: 
     66jp\-[dhtckrnsq]\.ne\.jp| 
    7167[dhtckrnsq]\.vodafone\.ne\.jp 
    7268)$@x; # end of qr@@ 
    7369 
     70my $regex_ezweb = qr@^(?: 
     71ezweb\.ne\.jp| 
     72.*\.ezweb\.ne\.jp 
     73)$@x; # end of qr@@ 
     74 
     75 
     76sub is_imode { 
     77    my $domain = _domain(shift); 
     78    return $domain && $domain =~ /$regex_imode/o; 
     79} 
     80 
     81sub is_vodafone { 
     82    my $domain = _domain(shift); 
     83    return $domain && $domain =~ /$regex_vodafone/o; 
     84} 
     85 
     86sub is_ezweb { 
     87    my $domain = _domain(shift); 
     88    return $domain && $domain =~ /$regex_ezweb/o; 
     89} 
     90 
    7491sub is_mobile_jp { 
    7592    my $domain = _domain(shift); 
    76     return $domain && $domain =~ /$regex/o; 
     93    return $domain && $domain =~ /(?:$regex_imode|$regex_vodafone|$regex_ezweb|$regex_mobile)/o; 
    7794} 
    7895 
     
    8097    my $stuff = shift; 
    8198    if (ref($stuff) && $stuff->isa('Mail::Address')) { 
    82        return $stuff->host; 
     99        return $stuff->host; 
    83100    } 
    84     my($user, $domain) = split /\@/, $stuff
    85     return $domain
     101    my $i = rindex($stuff, '@')
     102    return $i >= 0 ? substr($stuff, $i + 1) : undef
    86103} 
    87104 
     
    125142can be an email string or Mail::Address object. 
    126143 
     144=item is_imode 
     145 
     146  $bool = is_imode($email); 
     147 
     148returns whether C<$email> is a i-mode email address or not. C<$email> 
     149can be an email string or Mail::Address object. 
     150 
     151=item is_vodafone 
     152 
     153  $bool = is_vodafone($email); 
     154 
     155returns whether C<$email> is a vodafone(j-sky) email address or not. C<$email> 
     156can be an email string or Mail::Address object. 
     157 
     158=item is_ezweb 
     159 
     160  $bool = is_ezweb($email); 
     161 
     162returns whether C<$email> is a ezweb email address or not. C<$email> 
     163can be an email string or Mail::Address object. 
     164 
    127165=back 
    128166 
  • Mail-Address-MobileJp/trunk/t/01_mobile.t

    r908 r953  
    11use strict; 
    2 use Test::More tests => 26; 
     2#use Test::More tests => 26; 
     3use Test::More qw(no_plan); 
    34 
    45use Mail::Address; 
    56use Mail::Address::MobileJp; 
    67 
     8my @ok_imode = ( 
     9    'foo@docomo.ne.jp', 
     10); 
     11 
     12my @ok_vodafone = ( 
     13    'foo@jp-d.ne.jp', 
     14    'foo@d.vodafone.ne.jp', 
     15); 
     16 
     17my @ok_ezweb = ( 
     18    'foo@ezweb.ne.jp', 
     19    'foo@hoge.ezweb.ne.jp', 
     20); 
     21 
    722my @ok = ( 
    8     'foo@docomo.ne.jp', 
     23    @ok_imode, 
     24    @ok_vodafone, 
     25    @ok_ezweb, 
    926    'foo@mnx.ne.jp', 
    1027    'foo@bar.mnx.ne.jp', 
    11     'foo@ezweb.ne.jp', 
    12     'foo@hoge.ezweb.ne.jp', 
    1328    'foo@dct.dion.ne.jp', 
    14     'foo@ez1.ido.ne.jp', 
    15     'foo@cmail.ido.ne.jp', 
    16     'foo@jp-d.ne.jp', 
    1729    'foo@sky.tu-ka.ne.jp', 
    1830    'foo@bar.sky.tkc.ne.jp', 
     
    2537    'foo@p1.foomoon.com', 
    2638    'foo@x.i-get.ne.jp', 
    27     'foo@d.vodafone.ne.jp', 
     39    'foo@ez1.ido.ne.jp', 
     40    'foo@cmail.ido.ne.jp', 
    2841    Mail::Address->parse('foo <foo@p1.foomoon.com>'), 
    2942); 
     
    3750); 
    3851 
     52for my $ok (@ok_imode) { 
     53    ok is_imode($ok), "$ok"; 
     54} 
     55 
     56for my $ok (@ok_vodafone) { 
     57    ok is_vodafone($ok), "$ok"; 
     58} 
     59 
     60for my $ok (@ok_ezweb) { 
     61    ok is_ezweb($ok), "$ok"; 
     62} 
     63 
    3964for my $ok (@ok) { 
    4065    ok is_mobile_jp($ok), "$ok";