Projekt: Hesla Jednoty bratrské/1999/h99-01.pl

                                                                             
#!/usr/bin/perl

#h99-01.pl      Transformuje hesla99 z T602 do mezikodu 01
#	\xFE nahrazuje  

$/ = "\r\n";                  # paragraph mode

foreach $filename (@ARGV)
   {
    open(INFILE, $filename)
    || do
      {
       print STDERR "Nemuzu otevrit soubor $file: $!\n";
       next;
      };
   }
binmode (INFILE);

while (<INFILE>)            # pro kazdy paragraph:
  {
   if (/^@/) { next; }            # vyhod ridici radky
   s/\x0d//g;			# vyhod CR

   s/\xad\x8d\x0a//g;            # vyhod hyphen + softCR + LF
   s/\x8d\x0a/ /g;            # soft CR + LF -> mezera
   s/\x8d/ /g;                  # soft CR -> mezera
   s/\0x1a//;			# vyhod EOF
   s/\xfe/&nbsp;/g;		# tvrde mezery

#   s/\x01/ <!-font_Elite-> /g;      # Fonty
   s/\x01//g;				#ignoruj
#   s/\x03/ <!-font_Condens-> /g;
   s/\x03//g;				#ignoruj
   s/\x11/ <!-font_UZV1-> /g;
   s/\x12/ <!-font_UZV2-> /g;
   s/\x15/ <!-font_UZV3-> /g;
   s/\x17/ <!-font_UZV4-> /g;
   s/\x18/ <!-font_UZV5-> /g;
   s/\x19/ <!-font_UZV6-> /g;

   s/\x13//g;			# podtrzene ignoruj
   s/\x14//g;			# horni index ignoruj
   s/\x16//g;			# dolni index ignoruj
   s/\#//g;
   s/[\xB0-\xDF]+//g;			 #semigrafika pryc

   &pairs('\x02', '<B>', '</B>', 2);      # tucne
   &pairs('\x04', '<I>', '</I>', 3);      # kursiva
#   &pairs('\x14', '<!-horni_i->', '<!-/horni_i->', 4);
#   &pairs('\x16', '<!-dolni_i->', '<!-/dolni_i->', 5);
   &pairs('\x0F', '<H3>', '</H3>', 6);      # siroke
   &pairs('\x10', '<H2>', '</H2>', 7);      # vysoke
   &pairs('\x1D', '<H1>', '</H1>', 8);      # velke
#   &pairs('\x13', '<U>', '</U>', 1);      # podtrzene

   s/ +$//;                  # ukousni posledni mezery
  print;
  }

if ($flag[2]) { print STDERR "ERROR: lichy pocet 'tucny text' <B> !\n"; }
if ($flag[3]) { print STDERR "ERROR: lichy pocet 'kursiva' <I> !\n"; }
if ($flag[4]) { print STDERR "ERROR: lichy pocet 'horni index' !\n"; }
if ($flag[5]) { print STDERR "ERROR: lichy pocet 'dolni index' !\n"; }
if ($flag[6]) { print STDERR "ERROR: lichy pocet 'siroke pismo' <H3> !\n"; }
if ($flag[7]) { print STDERR "ERROR: lichy pocet 'vysoke pismo' <H2> !\n"; }
if ($flag[8]) { print STDERR "ERROR: lichy pocet 'velke pismo' <H1> !\n"; }
if ($flag[1]) { print STDERR "ERROR: lichy pocet 'podtrzeny text' <U> !\n"; }

# Subroutiny:

sub pairs                  # Nahrazuje a upravuje pary
  {
   ($x, $html, $htmlend, $i) = @_;      # hexa kod, cim nahradit, index
   s/$x\s*$x//g;            # vyhodi prazdne pary
   s/\r\n($x)/$1\r\n/g;            # </...> ze zacatku na konec predch. radky
   while (/($x)/)
     {
      if(!$flag[$i]) { $_ = $`."$html".$'; }
      else           { $_ = $`."$htmlend".$'; }
      $flag[$i] = !$flag[$i];
     }
  }