Warum einen neuen "enhanced" Parser? Was ist daran besser / anders ???
Für komplexe Anwendungen stellen sich mit dem in ConPresso integrierten Parser einige Probeme, die durch den "verbesserten" Parser gelöst werden sollen:
Trotz der neuen Funktionen ist der Parser vollständig kompatibel zu jeder original ConPresso-Installation. Wird der Original-Parser ersetzt, verhält sich das System wie zuvor und alle Anwendungen wie Module werden weiterhin korrekt laufen.
Debugging-Funktionen werden nur für Superuser und Administratoren sichtbar, so daß im laufenden Betrieb an den Templates gearbeitet werden kann, ohne daß dies von anderen wahrgenommen werden kann.
Was ist überhaupt ein Parser?
Ein Parser ist für jedes System erforderlich, bei dem Inhalte in ein bestimmte Form gebracht werden sollen. ConPresso benutzt dafür sog. Templates (Vorlagen), die ein HTML-Grundgerüst für einen Artikel bereitstellen, in dem bestimmte Stellen durch den vom Redakteur erstellten Inhalt ersetzt (denglisch: "geparst") werden sollen. Diese Stellen werden durch Platzhalter markiert, die bei ConPresso in Form von HTML-Kommentaren eingesetzt werden. Zusatzlich werden Bedingungen genutzt (ifSets und ifNotSets) um in Abhängigkeit vom Vorhandensein oder Nichtvorhandensein von redaktionellem Inhalt weitere Teile ein- oder auszublenden.
Für eine vollständige Beschreibung lesen Sie bitte das ConPresso-Handbuch.
Wie funktioniert dieser Parser?
Der Original-Parser nutzt einen einzigen Ersetzungsvorgang mi regulären Ausdrücken, um alle Vorkommen von Platzhaltern zu esetzen, nachdem vorher ein weiterer Ersetzungsvorgang mittels regulären Ausdrücken die bedingten Codebereiche (ifSets und ifNotSets) verarbeitet hat.
In einem ersten Versuch eines "enhanced" Parsers wurde dieser erste Ersetzungsvorgang in mehreren Durchgängen umgekehrt hierarchisch abgearbeitet, was komplexe Verschachtelungen erlaubte.
Hierbei durften aber Bedingungen eines einzelnen Platzhalters nicht auf verschiedenen Ebenen vorkommen, da grundsätzlich namensbezogen ersetzt wurde.
Daher wurde der Parser komplett neu konstruiert und benutzt jetzt eine sequentielle Abarbeitung des Templates und Verwaltung mittels eines Arrays statt eines einzelnen Strings. Dadurch werden die Verschachtelungsebenen isoliert voneinander abgearbeitet.