#!/usr/bin/perl

use strict;

my $ersatz;
my %regeln;
my @regelzeilen;
my $schluessel;
my $wort;
my $zeile;

# Regeldatei verwenden?
if ($#ARGV==0) {
    
    # Regeldatei vorhanden?
    die "Regeldatei ".$ARGV[0]." nicht lesbar!" unless -r $ARGV[0];

    open (REGELDATEI,"<$ARGV[0]") or die "Kann ".$ARGV[0]." nicht lesen!";
    @regelzeilen=<REGELDATEI>;
    close REGELDATEI;

    foreach $zeile (@regelzeilen) {

	# Leerzeilen interessieren nicht
	if ($zeile eq "\n") {
	    next;
	}

	# Kommentare interessieren nicht
	if ( substr ($zeile, 0, 1) eq '#') {
	    next;
	}

	# Wenn das eine Ersetzungsregel ist: merken
	if ( $zeile =~ /=/) {

	    ($wort, $ersatz)=split ('=', lc($zeile));

	    # Aufpassen: chomp() liefert nicht das Ergebnis
	    # zurueck, sondern die Anzahl der entfernten Zeichen!
	    chomp($ersatz);
	    $regeln{$wort}=$ersatz;
	}
    }

}


while (<STDIN>) {

    # Alles in Kleinbuchstaben wandeln. Woerter, die
    # nur aus Grossbuchstaben bestehen, werden
    # buchstabiert anstatt ausgesprochen!
    $zeile = lc($_);

    # Zahlen der Form 19xx werden ziemlich sicher
    # Jahreszahlen sein
    $zeile =~ s/\b19([0-9][0-9]\b)/ neunzehnhundert $1/g;

    # Zahlen mit - dazwischen sind wahrscheinlich Versangaben
    $zeile =~ s/(\d+)\-(\d+)/ $1 bis $2 /g;

    # Zahlen mit , dazwischen sind wahrscheinlich Versangaben
    $zeile =~ s/(\d+),(\d+)/ $1 $2 /g;




    foreach $schluessel (keys(%regeln)) {


#	print $zeile;
#	print "Mache ".$schluessel." zu ".$regeln{$schluessel}."?";

	$zeile =~ s/$schluessel/ $regeln{$schluessel} /gi;

#	$wort = "\\W".$schluessel."\\W";
#	print "suche ".$wort."\n";
#	$zeile =~ s/$wort/ $regeln{$schluessel} /gi;

#	print $zeile;
    }
    
    
    print $zeile;
}

