#!/usr/bin/perl
# Převede text z telužského písma do latinky. Jde pouze o usnadnění čitelnosti, ne nutně o zachování veškeré informace.
# (c) 2007 Dan Zeman <zeman@ufal.mff.cuni.cz>
# Licence: GNU GPL
use utf8;
use open ":utf8";
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
# Samostatná písmena pro samohlásky začínají kódem 3077.
@samohlasky = ("a", "á", "i", "í", "u", "ú", "r", "l", "", "e", "é", "aj", "", "o", "ó", "au");
for(my $i = 0; $i<=$#samohlasky; $i++)
{
my $src = chr($i+3077);
$prevod{$src} = $samohlasky[$i];
}
# Diakritická znaménka pro samohlásky začínají kódem 3134.
@diasamohlasky = ("á", "i", "í", "u", "ú", "r", "l", "", "e", "é", "aj", "", "o", "ó", "au");
# Souhlásky začínají kódem 3093.
@souhlasky =
(
"k", "kh", "g", "gh", "ng",
"č", "čh", "dž", "džh", "ň",
"t", "th", "d", "dh", "n", # tt tth dd ddh nn
"t", "th", "d", "dh", "n", "",
"p", "ph", "b", "bh", "m",
"j", "r", "rr", "l", "ll", "", "v",
"š", "š", "s", "h" # první š je asi spíš ś
);
for(my $i = 0; $i<=$#souhlasky; $i++)
{
my $src = chr($i+3093);
$prevod{$src} = $souhlasky[$i]."a";
# 3149 je znaménko virama (halantamu), které likviduje implicitní samohlásku "a"
my $src2 = chr(3149);
$prevod{$src.$src2} = $souhlasky[$i];
for(my $j = 0; $j<=$#diasamohlasky; $j++)
{
my $src2 = chr($j+3134);
$prevod{$src.$src2} = $souhlasky[$i].$diasamohlasky[$j];
}
}
# 3074 je znaménko anusvara (sunna), které způsobuje, že předcházející samohláska je nosová.
$prevod{chr(3074)} = "n";
# 3073 je znaménko candrabindu (arasunna), které rovněž nazalizuje předcházející samohlásku.
$prevod{chr(3073)} = "m";
# 3075 je znaménko visarga, které přidává neznělý dech za samohláskou.
$prevod{chr(3075)} = "'";
# 3174 je kód telužské nuly, 3183 je devítka
for(my $i = 0; $i<=9; $i++)
{
my $src = chr($i+3174);
$prevod{$src} = $i;
}
# Ladění: vypsat převody.
if(0)
{
foreach my $klic (sort(keys(%prevod)))
{
print("$klic\t$prevod{$klic}\n");
}
}
while(<>)
{
my @znaky = split(//, $_);
for(my $i = 0; $i<=$#znaky; $i++)
{
# Je-li převod dvojice znaků neprázdný, použít ho.
if($i<$#znaky)
{
my $src = $znaky[$i].$znaky[$i+1];
if($prevod{$src} ne "")
{
$znaky[$i] = $prevod{$src};
splice(@znaky, $i+1, 1);
$i--;
next;
}
}
if($prevod{$znaky[$i]} ne "")
{
$znaky[$i] = $prevod{$znaky[$i]};
}
}
print(join("", @znaky));
}