Commits

Burak Gürsoy committed 9d79e18

Implemented turkish_to_ascii with Text::Unidecode.
Test fixes.

  • Participants
  • Parent commits 7210602

Comments (0)

Files changed (4)

 
 Time zone is GMT+2.
 
-0.12 Sun Jul  8 01:50:04 2012
-    => Bump version.
+0.12 Mon Jul  9 18:32:46 2012
+    => Text::Unidecode is now required.
 
 0.11 Fri Jan 21 02:17:27 2011
     => Clean up.
-use 5.006;
 {
     module_name => 'Lingua::TR::ASCII',
-    requires    => {},
+    requires    => {
+        'Text::Unidecode' => '0.04',
+    },
     meta_merge  => {
         resources => {
             repository => 'http://bitbucket.org/burak/cpan-lingua-tr-ascii/',

File lib/Lingua/TR/ASCII.pm

 }
 
 sub turkish_to_ascii {
-    die "Unimplemented\n";
+    my($str, $encoding) = @_;
+    require Text::Unidecode;
+    use utf8;
+    return Text::Unidecode::unidecode( $str );
 }
 
 sub _new {
 
 =head1 FUNCTIONS
 
-=head2 ascii_to_turkish
+=head2 ascii_to_turkish STRING
 
 Converts (corrects) the supplied string into Turkish.
 
-=head2 turkish_to_ascii
+=head2 turkish_to_ascii STRING
 
-Not yet implemented.
+Converts the supplied C<STRING> into an ascii equivalent.
+This function is a wrapper around L<Text::Unidecode>.
 
 =head1 SEE ALSO
 
 L<Lingua::DE::ASCII>,
+L<Text::Unidecode>,
 L<http://ileriseviye.org/blog/?tag=turkish-deasciifier>,
 L<http://www.denizyuret.com/2006/11/emacs-turkish-mode.html>.
 

File t/01-basic.t

     q{Acisindan bagirip cagirarak sacma sozler soylemek.},
     q{Bogurtuler opucukler.},
     q{BUYUKCE BIR TOPAC TOPARLAGI VE DE YUMAGI yumagi.},
-    q{Bilgisayarlarda uc adet bellek turu bulunur. Islemci icerisinde yer alan yazmaclar, son derece hizli ancak cok sinirli hafizaya sahiptirler. Islemcinin cok daha yavas olan ana bellege olan erisim gereksinimini gidermek icin kullanilirlar. Ana bellek ise Rastgele erisimli bellek (REB veya RAM, Random Access Memory) ve Salt okunur bellek (SOB veya ROM, Read Only Memory) olmak uzere ikiye ayrilir. RAM'a istenildigi zaman yazilabilir ve icerigi ancak guc surdugu surece korunur. ROM'sa sâdece okunabilen ve onceden yerlestirilmis bilgiler icerir. Bu icerigi gucten bagimsiz olarak korur. Ornegin herhangi bir veri veya komut RAM'da bulunurken, bilgisayar donanimini duzenleyen BIOS ROM'da yer alir.},
+    q{Bilgisayarlarda uc adet bellek turu bulunur. Islemci icerisinde yer alan yazmaclar, son derece hizli ancak cok sinirli hafizaya sahiptirler. Islemcinin cok daha yavas olan ana bellege olan erisim gereksinimini gidermek icin kullanilirlar. Ana bellek ise Rastgele erisimli bellek (REB veya RAM, Random Access Memory) ve Salt okunur bellek (SOB veya ROM, Read Only Memory) olmak uzere ikiye ayrilir. RAM'a istenildigi zaman yazilabilir ve icerigi ancak guc surdugu surece korunur. ROM'sa sadece okunabilen ve onceden yerlestirilmis bilgiler icerir. Bu icerigi gucten bagimsiz olarak korur. Ornegin herhangi bir veri veya komut RAM'da bulunurken, bilgisayar donanimini duzenleyen BIOS ROM'da yer alir.},
     q{1969 yilinda 15 yasindayken 1000 lira transfer parasi alarak Camialti Spor Kulubu'nde amator futbolcu oldu. Daha sonra IETT Spor Kulubu'nun amator futbolcusu oldu. 1976 yilinda, IETT sampiyon oldugunda, Erdogan da bu takimda oynamaktaydi. Erokspor Kulubunde de futbola devam etti ve 16 yillik futbol yasamini 12 Eylul 1980 Askeri Darbesi sonrasinda birakti ve daha fazla siyasi faaliyet...},
     q{Opusmegi cagristiran catirtilar.},
     q{Hadi bir masal uyduralim, icinde mutlu, doygun, telassiz durdugumuz.},
     q{Acısından bağırıp çağırarak saçma sözler söylemek.},
     q{Böğürtüler öpücükler.},
     q{BÜYÜKÇE BİR TOPAÇ TOPARLAĞI VE DE YUMAĞI yumağı.},
-    q{Bilgisayarlarda üç adet bellek turu bulunur. İşlemci içerisinde yer alan yazmaçlar, son derece hızlı ancak çok sınırlı hafızaya sahiptirler. İşlemcinin çok daha yavaş olan ana bellege olan erişim gereksinimini gidermek için kullanılırlar. Ana bellek ise Rastgele erişimli bellek (REB veya RAM, Random Access Memory) ve Salt okunur bellek (SOB veya ROM, Read Only Memory) olmak üzere ikiye ayrılır. RAM'a istenildiği zaman yazılabilir ve içeriği ancak güç sürdüğü sürece korunur. ROM'sa sâdece okunabilen ve önceden yerleştirilmiş bilgiler içerir. Bu içeriği güçten bağımsız olarak korur. Örneğin herhangi bir veri veya komut RAM'da bulunurken, bilgisayar donanımını düzenleyen BİOS ROM'da yer alır.},
+    q{Bilgisayarlarda üç adet bellek turu bulunur. İşlemci içerisinde yer alan yazmaçlar, son derece hızlı ancak çok sınırlı hafızaya sahiptirler. İşlemcinin çok daha yavaş olan ana bellege olan erişim gereksinimini gidermek için kullanılırlar. Ana bellek ise Rastgele erişimli bellek (REB veya RAM, Random Access Memory) ve Salt okunur bellek (SOB veya ROM, Read Only Memory) olmak üzere ikiye ayrılır. RAM'a istenildiği zaman yazılabilir ve içeriği ancak güç sürdüğü sürece korunur. ROM'sa sadece okunabilen ve önceden yerleştirilmiş bilgiler içerir. Bu içeriği güçten bağımsız olarak korur. Örneğin herhangi bir veri veya komut RAM'da bulunurken, bilgisayar donanımını düzenleyen BİOS ROM'da yer alır.},
     q{1969 yılında 15 yaşındayken 1000 lira transfer parası alarak Camialtı Spor Kulübü'nde amatör futbolcu oldu. Daha sonra İETT Spor Kulübü'nün amatör futbolcusu oldu. 1976 yılında, İETT şampiyon olduğunda, Erdoğan da bu takımda oynamaktaydı. Erokspor Kulübünde de futbola devam etti ve 16 yıllık futbol yaşamını 12 Eylül 1980 Askeri Darbesi sonrasında bıraktı ve daha fazla siyasi faaliyet...},
     q{Öpüşmeği çağrıştıran çatırtılar.},
     q{Hadi bir masal uyduralım, içinde mutlu, doygun, telaşsız durduğumuz.},
 );
 
 for my $i ( 0..$#ascii ) {
-    is( ascii_to_turkish( $ascii[$i] ), $turkish[$i], 'EQ ' . ($i + 1) );
+    my $ascii_verbatim     = $ascii[$i];
+    my $turkish_verbatim   = $turkish[$i];
+    my $turkish_converted  = ascii_to_turkish( $ascii_verbatim  );
+    my $ascii_converted    = turkish_to_ascii( $turkish_verbatim   );
+
+    is(     $turkish_converted, $turkish_verbatim, 'EQ(turkish) ' . ($i + 1) );
+    _chars( $turkish_converted, $turkish_verbatim, 'EQ(turkish) ' . ($i + 1) );
+
+    is(     $ascii_converted,   $ascii_verbatim  , 'EQ(ascii)   ' . ($i + 1) );
+    _chars( $ascii_converted,   $ascii_verbatim  , 'EQ(ascii)   ' . ($i + 1) );
 }
 
 TEST_WARN: {
     is( $test3, $test3, "SIZE EQ(${i}a) \\n" );
 }
 
+sub _chars {
+    my($got, $expected, $id) = @_;
+    my @got      = split m{}xms, $got;
+    my @expected = split m{}xms, $expected;
+    if ( @got == @expected ) {
+        my @buf;
+        while ( @got ) {
+            my $char_got = shift @got;
+            my $char_exp = shift @expected;
+            next if $char_got eq $char_exp;
+            push @buf, [ $char_got, $char_exp ];
+        }
+        if ( @buf ) {
+            require Data::Dumper;
+            diag sprintf "[%s] Mismatching chars: %s", $id, Data::Dumper::Dumper( \@buf );
+        }
+    }
+    else {
+        diag sprintf "[%s] Char count mismatch %d != %d",
+                        $id,
+                        scalar( @got ),
+                        scalar( @expected );
+    }
+    return $got, $expected;
+}
+
 1;
 
 __END__