#!/usr/bin/perl
# verze 2.0
# (c) 2004 Pavel Satrapa

$pomlcky = 1;                    # nahrazovat pomlcky ve slovech symboly &shy; ?
$errreport = 0;                  # hlasit chyby do STDERR ?
$hledane = "[AaIiKkOoSsUuVvZz]"; # ktera samotna pismena nas zajimaji ?

# nasledujici jiz nemenit!
$predpona = "";
$veznacce = 0;
$cislor = 0;

&ZpracujSoubor;


sub ZpracujSoubor {
 while ( $radek = <STDIN> ) {
   $cislor++;
   chop ( $radek );
   $radek =~ s/\s+$//;
   if ( $predpona ) {
     ($mezera,$radek) = $radek =~ /^(\s*)(.*)$/;
     $novyradek = $mezera . $predpona;
     $predpona = "";
   }
   else {
     $novyradek = "";
   }
   while ( $radek ) {
     ($znak,$radek) = $radek =~ /^(.)(.*)$/;
     if ( $znak eq "<" ) {
       if ( $veznacce && $errreport ) {
         print STDERR "$cislor: Chyba! Dva znaky '<', mezi nimiz chybi '>'.\n";
       }
       $veznacce = 1;
       $novyradek .= $znak;
     }
     elsif ( $znak eq ">" ) {
       if ( (! $veznacce) && $errreport ) {
         print STDERR "$cislor: Chyba! Dva znaky '>', mezi nimiz chybi '<'.\n";
       }
       $veznacce = 0;
       $novyradek .= $znak;
     }
     elsif ( $veznacce ) {
       $novyradek .= $znak;
     }
     elsif ( $znak eq "-" ) {
       if ( $novyradek =~ /\S\s+$/ ) {
         $novyradek =~ s/(\S)\s+$/\1\&nbsp;/;
       }
       if ( $pomlcky && ($novyradek =~ /[^a-zA-Z\128-\255]$/) &&
            ($radek =~ /^[^a-zA-Z\128-\255]/) ) {
         $novyradek .= "&ndash;";
       }
       else {
         $novyradek .= $znak;
       }
     }
     elsif ( ($znak eq '&') and ($radek =~ /^[nm]dash;/) ) {
       if ( $novyradek =~ /\S\s+$/ ) {
         $novyradek =~ s/(\S)\s+$/\1\&nbsp;/;
       }
       $novyradek .= $znak;
     }
     elsif ( $znak =~ /$hledane/ ) {
          if ( $novyradek =~ /(\s$|\&nbsp;$|^$|\($|\[$|{$)/ ) {
            if ( $radek =~ /^\s/ ) {
              $novyradek .= $znak . "&nbsp;";
              ($pryc,$radek) = $radek =~ /^(\s+)(.*)$/;
            }
            elsif ( $radek =~ /^$/ ) {
              $predpona = $znak . "&nbsp;";
              if ( $novyradek =~ /\S$/ ) {
                if ( $novyradek =~ /\s/ ) {
                  ($novyradek,$pridat) = $novyradek =~ /^(.*)\s(\S+)$/;
                  $predpona = $pridat . $predpona;
                }
                else {
                  $predpona = $novyradek . $predpona;
                  $novyradek = "";
                }
              }
            }
            else {
              $novyradek .= $znak;
            }
          }
          else {
            $novyradek .= $znak;
          }
     }
     else {
       $novyradek .= $znak;
     }
   }
   print "$novyradek\n";
 }
 if ( $predpona )
   { print "$predpona\n"; }
}

