Changeset 5431

Show
Ignore:
Timestamp:
01/24/08 23:34:25 (5 years ago)
Author:
tokuhirom
Message:

- fixed module load order problem.
- cache convert-utf8-map.pl.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Encode-JP-Mobile/branches/character/lib/Encode/JP/Mobile/Character.pm

    r5430 r5431  
    44use Encode; 
    55use Encode::JP::Mobile::Charnames; 
    6 use Encode::JP::Mobile ':props'; 
     6use Encode::JP::Mobile; 
    77use File::ShareDir 'dist_file'; 
    88use Carp; 
     
    6262} 
    6363 
     64my $fallback_name_cache; 
    6465sub fallback_name { 
    6566    my ($self, $carrier) = @_; 
     
    6768    croak "invalid carrier name(docomo, kddi, softbank)" unless $carrier =~ /^(?:kddi|docomo|softbank)$/; 
    6869 
    69     my $src = dist_file('Encode-JP-Mobile', 'convert-map-utf8.pl'); 
    70     my $dat = do $src; 
    71     for my $from (keys %$dat) { 
    72         if (my $row = $dat->{$from}->{sprintf '%X', $self->{unicode}}->{$carrier}) { 
     70    $fallback_name_cache ||= do { 
     71        my $src = dist_file('Encode-JP-Mobile', 'convert-map-utf8.pl'); 
     72        do $src; 
     73    }; 
     74 
     75    for my $from (keys %$fallback_name_cache) { 
     76        if (my $row = $fallback_name_cache->{$from}->{sprintf '%X', $self->{unicode}}->{$carrier}) { 
    7377            if ($row->{type} eq 'name') { 
    7478                return decode 'utf8', $row->{unicode}; 
     
    8488    my $self = shift; 
    8589    my $uni = chr $self->{unicode}; 
    86     if ($uni =~ /\p{InDoCoMoPictograms}/) { 
     90    if ($uni =~ /\p{Encode::JP::Mobile::InDoCoMoPictograms}/) { 
    8791        return 'I'; 
    88     } elsif ($uni =~ /\p{InSoftBankPictograms}/) { 
     92    } elsif ($uni =~ /\p{Encode::JP::Mobile::InSoftBankPictograms}/) { 
    8993        return 'V'; 
    90     } elsif ($uni =~ /\p{InKDDIAutoPictograms}/) { 
     94    } elsif ($uni =~ /\p{Encode::JP::Mobile::InKDDIAutoPictograms}/) { 
    9195        return 'E'; 
    9296    } else {