AdvancedBBCodeParser
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.
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:
PHP-Code
class NewLineProvider extends BBCodeParserProvider
{
function NewLineProvider(){
}
function getOutput($string){
return nl2br($string);
}
}
Der
AdvancedBBCodeParser kann dabei beliebig viele Provider ausführen.
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
APF-Template
{Environment}_fontsize.ini
enthalten sein, die Farben in der Datei
APF-Template
{Environment}_fontcolor.ini
Die Konfigurationen bestehen dabei aus einer festen Sektion und einer variablen Anzahl von Größen-
und Farb-Definitionen:
DEFAULT_fontsize.ini:
APF-Konfiguration
[Sizes]
1 = "10px"
2 = "12px"
3 = "16px"
4 = "18px"
5 = "24px"
6 = "32px"
DEFAULT_fontcolor.ini:
APF-Konfiguration
[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:
PHP-Code
$bP = &$this->__getServiceObject('tools::string','AdvancedBBCodeParser');
echo $bP->parseCode($string);
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:
PHP-Code
$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.