Quicknavi |
|
Klassen-Referenz - AdvancedBBCodeParser
1. Einführung
Der AdvancedBBCodeParser ist eine generische Implementierung eines BBCode-Formatierers.
Im Gegensatz zum herkömmlichen BBCodeParser ist dieser leichgewichtig und mit der verwendeten
Provider-Logik einfach anpassbar. Der Parser bringt standardmäßig vier Provider mit, die
Schrift-Stile (fett, kursiv, unterstrichen), Schriftgröße (je nach Konfiguration),
Schrift-Farbe (je nach Konfiguration) und Zeilenumbrüche im übergebenen Text entsprechend
formatiert.
2. Aufbau
Der Parser besteht aus aus insgesamt drei Klassendefinitionen: einer
BBCodeParserDefinition, die einen Output-Provider (zuständig für die
Formatierung) beschreibt, einem Interface für den Provider (BBCodeParserProvider)
und dem Parser selbst (AdvancedBBCodeParser). Da Provider grundsätzlich in der
Lage sein müssen an Hand des aktuellen Kontextes der Applikation Konfigurationsdateien zu
laden sollte der AdvancedBBCodeParser möglichst als ServiceObject
erzeugt werden, damit dieser über den aktuellen Kontext verfügt.
Soll ein weiterer Provider hinzugefügt oder einbestehender ersetzt werden, so muss die
Implementierung des Providers stets von der Klasse BBCodeParserProvider erben. Eine
einfache Provider-Definition kann dem folgenden Quellcode-Kasten entnommen werden:
class NewLineProvider extends BBCodeParserProvider {
function NewLineProvider(){ }
function getOutput($string){ return nl2br($string); }
}
Der AdvancedBBCodeParser kann dabei beliebig viele Provider ausführen.
3. Anwendung
Soll der AdvancedBBCodeParser mit der Standard-Einstellung verwendet werden, muss
sichergestellt sein, dass je eine Konfigurationsdatei für die Schriftgrößen und
Schriftfarben existiert. Diese werden unter den Namespace config::tools::string::bbcpprovider
und dem jeweiligen Kontext der Applikation erwartet. Die Definition der Schriftgrößen muss
in der Datei
{Environment}_fontsize.ini
enthalten sein, die Farben in der Datei
{Environment}_fontcolor.ini
Die Konfigurationen bestehen dabei aus einer festen Sektion und einer variablen Anzahl von Größen-
und Farb-Definitionen:
DEFAULT_fontsize.ini:
[Sizes]
1 = "10px"
2 = "12px"
3 = "16px"
4 = "18px"
5 = "24px"
6 = "32px"
DEFAULT_fontcolor.ini:
[Colors]
green = "#56a437"
blue = "#002488"
lightblau = "rgb(102 153 255)"
orange = "rgb(233 142 31)"
gray = "#666666"
red = "red"
Anschließend kann der Parser wie folgt angewendet werden:
$bP = &$this->__getServiceObject('tools::string','AdvancedBBCodeParser'); echo $bP->parseCode($string);
4. Erweiterte Konfiguration
Um die bestehenden Provider zu ergänzen oder auszutauschen oder neue hinzuzufügen, stehen die
Methoden addProvider() und removeProvider() zur Verfügung. Die
standardmäßig beinhalteten Provider können unter folgendem Alias angesprochen werden:
-
standard.font.style: Formatierung von Schrift-Varianten (fett, kursiv, unterstrichen)
-
standard.font.size: Formatierung von Schrift-Größen
-
standard.font.color: Formatierung von Schrift-Farben
-
standard.newline: Formatierung von Zeilenumbrüchen
Weitere Aliases können frei definiert werden. Das folgende Beispiel zeigt, wie die bestehende
Provider ersetzt und neue hinzugefügt werden können:
$bP = &$this->__getServiceObject('tools::string','AdvancedBBCodeParser');
// Bestehenden Provider ersetzten $fontProv = new BBCodeParserDefinition('my::namespace::bbcp','MyFontParser'); $bP->addProvider('standard.font.style',$fontProv);
// Neuen Provider hinzufuegen $specProv = new BBCodeParserDefinition('my::namespace::bbcp','MySpecialParser'); $bP->addProvider('special_provider',$specProv);
// Bestehenden Provider entfernen $bP->removeProvider('standard.newline');
echo $bP->parseCode($string);
Kommentare
Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.
|