Show
Ignore:
Timestamp:
03/13/08 10:14:58 (10 months ago)
Author:
daisuke
Message:

lang/perl/Acme-Shukugawa-Atom; apply_shisu_rule, apply_waiha_rule

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Acme-Shukugawa-Atom/trunk/lib/Acme/Shukugawa/Atom.pm

    r7863 r7878  
    7676sub postprocess {} 
    7777 
     78# シースールール 
     79# 寿司→シースー 
     80# ン、が最後だったらひっくり返さない 
     81my $small    = decode_utf8("[ャュョッー]"); 
     82my $syllable = decode_utf8("(?:.$small?)"); 
     83my $nbar     = decode_utf8("[^ンー]"); 
     84sub apply_shisu_rule 
     85{ 
     86    my ($self, $yomi) = @_; 
     87    return $yomi if $yomi =~ s/^($syllable)($syllable)$/$2ー$1ー/; 
     88    return; 
     89} 
     90 
     91# ワイハールール 
     92# ハワイ→ワイハー 
     93sub apply_waiha_rule 
     94{ 
     95    my ($self, $yomi) = @_; 
     96 
     97    if ($yomi =~ s/^($syllable[ー]?)(..)$/$2$1/) { 
     98        $yomi =~ s/([^ー])$/$1ー/; 
     99        return $yomi; 
     100    } 
     101    return; 
     102} 
     103 
    78104sub atomize 
    79105{ 
     
    81107    $yomi =~ s/ー+/ー/g; 
    82108 
     109    # Length 
    83110    my $length = length($yomi); 
    84     if ($length <= 2) { 
    85         return $yomi if $yomi =~ s/(.)([^ン])/$2ー$1ー/; 
    86         return; 
     111    $length -= ($yomi =~ /$small/g); 
     112    if ($length == 2) { 
     113        return $self->apply_shisu_rule($yomi); 
     114    } 
     115 
     116    if ($length == 3) { 
     117        return $self->apply_waiha_rule($yomi); 
    87118    } 
    88119