Show
Ignore:
Timestamp:
03/12/08 14:24:11 (9 months ago)
Author:
daisuke
Message:

lang/perl/Acme-Shukugawa-Atom; もうちょい調整。

Location:
lang/perl/Acme-Shukugawa-Atom/trunk
Files:
2 modified

Legend:

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

    r7828 r7832  
    3131        '別に' => 'ジリサワゴネタ', 
    3232        '予約した' => 'バミった', 
     33        '[22][44]時|[00]時' => 'テッペン', 
    3334        '巨乳|胸(?:の|が)(大きい|でかい|デカイ)' => 'パイオツカイデー', 
    34         '女性|女の人|お姉さん|おねーさん' => 'チャンネー' 
     35        '女性|女の人|お姉さん|おねーさん' => 'チャンネー', 
     36        'お?(?:ばあ|婆)さん' => 'F3のチャンバー', 
    3537    ); 
    3638         
     
    6163            if ($yomi) { 
    6264                # normalize 
    63                 $yomi =~ s/ー+/ー/g; 
    64                 if (length($yomi) <= 2) { 
    65                     $yomi = $surface; 
    66                 } else { 
    67                     $yomi =~ s/(.(?:ー+)?)$//; 
    68                     $yomi = $1 . $yomi; 
    69                 } 
     65                $yomi = $self->atomize($yomi) || $surface; 
    7066            } else { 
    7167                $yomi = $surface; 
     
    7874 
    7975sub postprocess {} 
     76 
     77sub atomize 
     78{ 
     79    my ($self, $yomi) = @_; 
     80    $yomi =~ s/ー+/ー/g; 
     81 
     82    my $length = length($yomi); 
     83    if ($length <= 2) { 
     84        return; 
     85    } 
     86 
     87    my $done = 0; 
     88    if ($length == 4) { # 4 character words tend to have special xformation 
     89        if ($yomi =~ s/^(.ー)(..)$/$2$1/) { 
     90            $done = 1; 
     91        } 
     92    } 
     93 
     94    if (! $done) { 
     95        $yomi =~ s/(.(?:ー+)?)$//; 
     96        $yomi = $1 . $yomi; 
     97    } 
     98 
     99    $yomi =~ s/ッ$/ツ/; 
     100    return $yomi; 
     101} 
     102 
    80103 
    811041; 
     
    90113 
    91114  use Acme::Shukugawa::Atom; 
    92  
    93115  my $newstring = Acme::Shukugawa::Atom->translate($string); 
    94116 
  • lang/perl/Acme-Shukugawa-Atom/trunk/t/01_basic.t

    r7828 r7832  
    11use strict; 
    22use utf8; 
    3 use Test::More (tests => 2); 
     3use Test::More (tests => 3); 
    44 
    55BEGIN 
     
    99 
    1010is( Acme::Shukugawa::Atom->translate("六本木の胸の大きいお姉さんがいる店を予約した"), "ギロッポンのパイオツカイデーチャンネーがいる店をバミった" ); 
     11is( Acme::Shukugawa::Atom->translate("狼"), "カミオー" ); 
     12 
     13is( Acme::Shukugawa::Atom->translate("おばあさんの口はどうして大きいの?"), 
     14    "チャンバーのチークーはどうしてカイデー");