tree.pl [ --verbose ... | --no_verbose ]
[ --lang LANG ] [ --webdir WEBDIR ] [ --kaldir KALDIR ] [ --srcdir SRCDIR ]
[ --shiftnd SHIFTND ]...
[ --incldir INCLDIR ]... [ --excldir EXCLDIR ]...
[ --inclfile INCLFILE ]... [ --exclfile EXCLFILE ]...
[ --rtname RTNAME ] [ --rtrefbase RTREFBASE ] [ --rttitle RTTITLE ] [ --ixfile IXFILE ]
[ --dirnmflt DIRNMFLT ]... [ --filenmflt FILENMFLT ]...
[ --titlecmd TITLECMD ] [ --xmlns XMLNS ]
Dieses Programm erzeugt die Datei kalender/tree.xml (s. tree.rng) mit der Baustruktur der Kalender, wie sie in die Startseite der Website eingebunden wird. Zum Verzeichnis kalender wird der „Wurzelknoten” (der Kalender) angelegt. Die Kalender eines Jahres JAHR liegen im Unterverzeichnis kalender/. Zu jedem Jahr wird ein Verzeichnisknoten mit den Kalendern als Dateiknoten (Endknoten) angelegt, zusätzlich werden zu den Kalendern des „aktuellen” (s. JAHR--shiftnd) Jahres Dateiknoten direkt unter dem Wurzelknoten angelegt. In der Voreinstellung ist das aktuelle Jahr in den Monaten Januar bis November das laufenden Jahr, im Dezember das Folgejahr.
Es ist mit Perl 5.10.1 getestet.
Zu allen Befehlszeilenargumenten gibt es Voreinstellungen.
Zum Beispiel wählt „--incldir .” zunächst alle Unterverzeichnisse von KALDIR aus. „--excldir '/no$'” schließt nur Unterverzeichnisse mit dem Namen aus. Wenn es kein Unterverzeichnis mit dem Namen no gibt, werden alle Unterverzeichnisse und deren Unterverzeichnisse ausgewählt.no
Entsprechend wählt „--inclfile . --exclfile /whisky\$” alle Dateien aus, die nicht whisky heißen.
--helpGibt eine kurze Hilfe mit den Voreinstellungen zu allen möglichen Befehlszeilenargumenten aus.
--versionGibt kurze Hinweise zum Programm und die Version aus.
--verboseErhöht den Umfang der Meldungen nach STDERR.
--no_verboseUnterdrückt die Ausgabe von Meldungen. Die Optionen --verbose und --no_verbose werden der Reihe nach ausgewertet.
--lang LANGLANG ist die Kennung der Sprache mit möglichen Erweiterungen. Der Wert wird für den Platzhalter ${lang} in den Befehl TITLECMD zur Ermittlung des Titels eines Dokuments eingesetzt.
--webdir WEBDIRDas Basis-Verzeichnis zur Website wird für den Platzhalter ${webdir} in den Werten KALDIR, SRCDIR und TITLECMD eingesetzt.
--kaldir KALDIRDas Verzeichnis der Kalender-Quelldaten mit dem Unterverzeichnis base für die Grunddaten und Unterverzeichnissen für die Bildauswahl-Dateien der Kalender eines Jahres. Der Wert kann Platzhalter JAHR${xxx} (z.B. ${webdir}) für das Befehlszeilenargument XXX enthalten.
--srcdir SRCDIRDas Verzeichnis der Skripte und Quellcode-Dateien zun dem Kalendern. Der Wert kann Platzhalter ${xxx} (z.B. ${webdir}) für das Befehlszeilenargument XXX enthalten.
--shiftnd SHIFTNDDer Name eines Knotens (s. name), dessen Kindknoten zu Kindknoten des Wurzelknotens kopiert werden sollen. Das gesamte Argument kann wiederholt werden. Dann werden möglicherweise die Unterknoten mehrerer Knoten kopiert.
--incldir INCLDIRDie Unterverzeichnisse von , die in die ausgegebene Baumstruktur eingehen, werden in zwei Schritten ausgewählt. Im ersten Schritt werden alle Unterverzeichnisse ausgewählt, deren vollständiger Verzeichnispfad einem der regulären Ausrücke KALDIRINCLDIR entspricht. Das gsamte Argument kann wiederholt werden. Im zweiten Schritt werden alle Unterverzeichnisse ausgenommen, deren Verzeichnispfad einem der regulären Ausdrücke EXCLDIR entspricht.
--excldir EXCLDIREin Unterverzeichnis von , dessen vollständiger Verzeichnispfad einem der regulären Ausdrücke KALDIREXCLDIR entspricht (das gesamte Argument kann wiederholt werden), wird nicht in die ausgegebene Baumstruktur aufgenommen, auch wenn der Verzeichnispfad einem der Ausrücke INCLDIR entspricht.
--inclfile INCLFILEDateien im Verzeichnis oder einem ausgewählten Unterverzeichnis (s. KALDIRINCLDIR und EXCLDIR) werden vorläufig ausgewählt, wenn ihr vollständiger Dateipfad einem regulären Ausdruck INCLFILE entspricht. Das Argument kann mehrfach vorkommen. Wenn der Dateipfad dann keinem der regulären Ausdrücke EXCLFILE entspricht, wird die Datei in die Baumstruktur aufgenommen.
--exclfile EXCLFILEDer reguläre Ausdruck EXCLFILE beschreibt Dateipfade, die aus der ausgegebenen Baumstruktur ausgeschlossen sind (s. INCLFILE). Das gesamte Argument kann mehrfach vorkommen.
--rtname RTNAMERTNAME ist der Name (s. name), des Wurzelknotens, der dem Verzeichnis entspricht.KALDIR
--rtrefbase RTREFBASEDer Wert RTREFBASE wird als Verweis-Basis (s. refbase) zum Wurzelknoten ausgegeben.
--rttitle RTTITLEDer Titel (s. title) des Wurzelknotens, der dem Verzeichnis entspricht.KALDIR
Wenn die Datei existiert, wird der voreingestellte Titel dieser Datei entnommen (s. KALDIR/IXFILETITLECMD).
--ixfile IXFILEDer Name der Index-Datei eines Verzeichnisses. Der Wert IXFILE hat zwei Funktionen: er wird als Inhalt des Elements ref zu Verzeichnis-Knoten ausgegeben. Wenn die Datei mit dem Namen IXFILE im Verzeichnis KALDIR oder einem ausgewählten Unterverzeichnis existiert, dann wird aus dieser Datei der Titel des Verzeichnisknotens bestimmt (s. TITLECMD).
--dirnmflt DIRNMFLTDer Name (name) eines Verzeichnisknotens wird aus dem Verzeichnispfad bestimmt. Er ist die erste "Matchgruppe" des regulären Ausdrucks DIRNMFLT, der auf den vollständigen Verzeichnispfad angewandt wird. Das gesamte Argument kann mehrfach vorkommen. Der erste passende reguläre Ausdruck bestimmt den Namen. Wenn kein regulärer Ausdruck passt, ist der Verzeichnisname auch der Knotenname.
--filenmflt FILENMFLTDer Name (name) eines Dateiknotens wird aus dem Dateipfad bestimmt. Er ist die erste "Matchgruppe" des regulären Ausdrucks DIRNMFLT, der auf den vollständigen Dateipfad angewandt wird. Das gesamte Argument kann mehrfach vorkommen. Der erste passende reguläre Ausdruck bestimmt den Namen. Wenn kein regulärer Ausdruck passt, ist der Dateiname auch der Knotenname.
--titlecmd TITLECMDBefehl zur Bestimmung des Titels eines Dokuments mit Platzhaltern. Die möglichen Platzhalter sind ${lang}, ${webdir}, ${kaldir}, ${srcdir} und ${ixfile} für die Befehlszeilenargumente sowie ${file} für den Dateipfad des Dokuments, dessen Titel bestimmt werden soll.
--xmlns XMLNSXMLNS ist der XML-Namensraum der Ausgabe.
Das Programm benutzt die folgenden Module:
Herbaer::Readargs (Readargs.pm (Quelltext))Die Funktion Herbaer::Readargs::read_args liest die Befehlszeilen-Argumente.
Herbaer::ReplaceDie Funktion Herbaer::Replace::replace ersetzt Platzhalter der Form ${xxx}. Die Datei Replace.pm ist im Zusammenhang mit Lokalisierungen / Übersetzungen beschrieben.
Herbaer::XMLDataWriter (Datei XMLDataWriter.pm (Quelltext))Ausgabe von XML-Daten.