#!/usr/local/bin/perl -w =pod =head1 dbpublish.pl konvertiert eine Veranstaltungsdatenbank in Text mit X-Press-Marken =head2 description Die Eingabedaten sollen durch ein Tab-Zeichen getrennt sein. Die Reihenfolge der Felder muss folgendermassen aufgebaut sein: Datum Titel der Veranstaltung Bemerkungen Ort der Veranstaltung Zeit der Veranstaltung Sparte =head2 Author Copyright (c) 1998 by Karsten Meier =cut require 'StandardFile.pl'; #$| = 1; #no buffering during testing #### Konfiguration #### $XTagsStart = '' . "\n" . '@V-Sparte=[S"Normal"]<*C*ra(11.373,0,"Schwarz",100,0,0,-2.6279)$Pc"Wei§">' . ' @V-Text=[S"Normal"]<*J*p(8,0,0,0,0,0,$)$Pz9>' . ' @V-Titel=[S"Normal"]<*L$PBz9>' . "\n"; # $XTagsStartAlt = ''. "\n" ; #'@V-Sparte=[S"Normal"]<*C*ra(11.373,0,"Schwarz",100,0,0,-2.6279)$Pc"Wei§"> '."\n". #'@V-Text=[S"Normal"]<*J*p(8,0,0,0,0,0,$)$Pz9>' ."\n"; # '@V-Titel=[S"Normal"]<*L$PBz9> ' . "\n"; #### Deklarationen #### #### Eingabedateien ermitteln #### print "wir haben $ARGV -1 Argumente. sie Lauten @ARGV \n"; if($#ARGV < 0) # Falls keine Eingabe { # Frage Benutzer nach Eingabedatei $inputfilename = &StandardFile::GetFile('TEXT'); if(defined $inputfilename) { unshift(@ARGV, $inputfilename); } else { die "keine Eingabedatei"; } } foreach $filename (@ARGV) { # fŸr jede datei: &processFile($filename); } #end foreach # -------------------------------------------------------------- # Diese Funktion uebernimmt die eigentliche Arbeit sub processFile{ my($filename) = @_; my($vdate, $vtitle, $vremark, $vplace, $vtime, $vkat); my ($oldKat) = ""; open( INPUT, $filename) # šffne Eingabedatei or die "kann $filename nicht šffnen"; open( OUTPUT, ">$filename.xtags") # erzeuge und šffne Ausgabedatei or die "kann $filename.xtags nicht schreiben"; print "ich konvertiere $filename\n"; Ê # Statusmeldung # jetzt koennen wir mit der eigentlichen Konvertierung anfangen print OUTPUT $XTagsStart; Ê while() { # fŸr jede Eingabezeile chop; # entferne letztes Zeichen &specialXTagsChars($_); # wandelt die Spezialzeichen um # teile Eingabe in die Felder auf: ($vdate, $vtitle, $vremark, $vplace, $vtime, $vkat) = split /\t/; if($oldKat ne $vkat) # falls neue Kategorie { $oldKat = $vkat; # merke die Kategorie # und schreibe eine ZwischenŸberschrift print OUTPUT '@V-Sparte:<$>' ."$vkat\n"; } if(defined $vtitle) # Falls Ÿnerhaupt was zu tun ist { print "$vtitle\n"; # Statusmeldung # schreibe den Datensatz mit Formatierungen: print OUTPUT '@V-Titel:<$>'. "$vtitle\n"; print OUTPUT '@V-Text:<$>'; # verhindere das bei fehlender $vremark ein Komma Ÿbrigbleibt print OUTPUT "$vremark, " unless $vremark eq ""; print OUTPUT "$vplace, $vtime\n"; } } #end while Ê close( OUTPUT); close( INPUT ); MacPerl::SetFileInfo("ALFA","TEXT","$filename.xtags"); # set Filetype to Alpha Editor } # -------------------------------------------------------------- # Diese Funktion konvertiert die kritischen Sonderzeichen # in Ihre XTags Interpretationen: # < -> <\<> # \ -> <\\> # @ -> <\@> sub specialXTagsChars { $_[0] =~s|<|<\\<>|; $_[0] =~s|[~<]\\|<\\\\<>|; $_[0] =~s|\@|<\@>|; }