|
buerschgens.de ...nur zur Sicherheit. |
|
buerschgens.de ...nur zur Sicherheit |
|
Erweiterte Befehle / Funktionen
Neben den normalen Metazeichen besitzt Proxomitron eine Reihe spezieller Vergleichs- und Ersetzungskommandos, die erweiterten Befehle (englisch: Extended Matching Commands). Erweiterte Befehle beginnen mit einem "$". Dann folgt der Name der Funktion in Großbuchstaben. Dahinter stehen in Klammern die an die Funktion übergebenen Befehle und Variablen.
$FUNKTIONSNAME(Parameter1, Parameter2, ...)
RückgabedatenDas Ergebnis eines Funktionsaufrufs besteht entweder aus einem String, den die Funktion als Ergebnis ihrer Arbeit zurückgibt, oder aus einer boolschen TRUE/FALSE-Aussage. Wenn die Funktion einen String zurückgibt, dann wird dieser so interpretiert, als stände er anstelle des Funktionsaufrufs im Filterausdruck. Boolsche Aussagen werden hingegen so interpretiert, als stände anstelle des Funktionsaufrufs irgend ein herkömmlicher Unterausdruck, der sich entweder als zutreffend oder als nicht zutreffend herausgestellt hat. Das heißt konkret, dass der Teilausdruck, in dem ein solcher Funktionsaufruf steht, je nach Funktionsergebnis, entweder fortgesetzt oder abgebrochen wird. Das klingt im ersten Moment wahrscheinlich etwas verwirrend, ist aber logisch, wenn man bedenkt, dass diese Funktionen aus einer Textbeschreibungssprache heraus aufgerufen werden, in der es für jedes Atom (kleinster möglicher Ausdruck) nur die beiden Zustände "trifft zu" und "trifft nicht zu" gibt. Beispiel 1:
ein Stück Text $CONFIRM(Ja oder Nein?) mehr Text
Die Funktion $CONFIRM() zeigt ein Windows-typisches Abfrage-Dialogfeld mit Ja/Nein-Schaltflächen an. Je nach dem, ob der Benutzer "Ja" oder "Nein" anklickt, gibt die Funktion TRUE oder FALSE zurück und entscheidet damit, ob Proxomitron an dieser Stelle abbrechen oder mit der Verarbeitung des aktuellen Teilausdrucks fortfahren soll. Beispiel 2:
$TYPE(htm) <!-- * -->
| $TYPE(js) /\* * \*/ Das hier gezeigte Beispiel ist ein einfacher Vergleichsausdruck, der Kommentarbereiche in HTML-Seiten und JavaScript-Dateien erfassen soll. Die Funktion $TYPE() nimmt als Parameter verschiedene Kürzel an, die jeweils für einen bestimmten Datentyp stehen und gibt TRUE oder FALSE zurück, wenn der erfragte Typ auf die gerade verarbeiteten Daten zutrifft bzw. nicht zutrifft. Die beiden Typabfragen sorgen also dafür, dass die dahinter stehenden Teilausdrücke nur dann verarbeitet werden, wenn die gerade verarbeiteten Daten den gewünschten Typ haben.
Damit Proxomitron nicht nach dem ersten FALSE abbricht, sondern statt dessen die nächste Möglichkeit ausprobiert, sind die beiden Teilausdrücke mit ODER verknüpft. Einsatzorte / VerarbeitungsphasenViele der Funktionen ermöglichen die Nutzung von Informationen, die im Rahmen der durch den jeweiligen Filter bearbeiteten Daten normalerweise nicht verfügbar wären.
Über die Funktion $IHDR() ist es z.B. möglich, bei der Verarbeitung des Quelltexts einer Webseite, rückwirkend auf die bei der Übertragung dieser Seite empfangenen Header-Informationen zuzugreifen und diese z.B. in Fallunterscheidungen einzubeziehen oder auch als String in den Seitenquelltext zu übernehmen. In beiden Fällen gibt es ganz entscheidende Fragen, die sich jeder Filterentwickler stellen muss:
Diese Seite wird nach und nach ausgebaut, so wie ich Zeit dafür finde. |