[1.17] Umbau des Tag-Parsers

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Gesperrt
Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

[1.17] Umbau des Tag-Parsers

Beitrag von dr.e. » 27.01.2013, 21:11:00

Hallo zusammen,

ich habe in der letzten Woche ein neues Feature in den APF-Tag-Parser eingebaut, damit dieser verschachtelte Strukturen von Tags mit gleichem Präfix und Namen versteht und verarbeiten kann. Ab der Revision #2072 können Tags in der Form

Code: Alles auswählen

<foo:bar>
   <foo:bar>
   </foo:bar>
   <foo:bar />
</foo:bar>
<foo:bar>
</foo:bar>
<foo:bar />
korrekt verarbeitet werden. Da sich ander Grund-Logik des Parsers - sprich Abhängigkeit der Verarbeitung von der Reihenfolge der Tags und die Weiterverarbeitung ist abhängig von der Tag-Implementierung (hier: FooBarTag) - nichts ändert, müssen natürlich ein paar Grundregeln eingehalten werden. Diese sind:
  • Die Reihenfolge muss so gewählt werden, dass innerhalb der <foo:bar /> Tags enthaltene Strukturen auch nur von diesem verarbeitet werden. Ansonsten resultiert hieraus ebenfalls eine falsche Zuordnung wie in 1.16 mit gleichen Tags.
  • Der Parser selbst reicht die Inhalte wie auch vor 1.17 direkt zur Weiterverarbeitung an das Kind-Tag weiter. Im obigen Beispiel erhält die Instanz des ersten <foo:bar />-Tag den String <foo:bar></foo:bar><foo:bar /> als Inhalt. Sofern ein Tag das neue Feature der Schachtelung unterstützen möchte, muss der Tag sich selbst wieder als Kind bekannt geben.
Da der Eingriff in den Parser nicht unerheblich ist, bitte ich um Tests des SVN-Standes mit euren Applikationen. Alle mir zur Verfügung stehenden Applikationen laufen soweit fehlerfrei, allerdings kann ich natürlich nicht ausschließen, dass ich Sonderfälle nicht dort vertreten hatte.

Vielen Dank euch!
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: [1.17] Umbau des Tag-Parsers

Beitrag von jwlighting » 30.01.2013, 19:28:20

Hallo Christian,

das klingt auf jeden Fall interessant. Vielen Dank dafür!

Ich werde mir das am Wochenende mal genauer ansehen und evtl. in meinen Projekten testen.
Für Projekte, die schon mit dem 1.17-Zweig laufen, bräuchte ich doch nur die pagecontroller.php austauschen, richtig?

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.17] Umbau des Tag-Parsers

Beitrag von dr.e. » 30.01.2013, 20:43:30

Hallo Jan,
Für Projekte, die schon mit dem 1.17-Zweig laufen, bräuchte ich doch nur die pagecontroller.php austauschen, richtig?
Ja. Je nach dem auf welchem 1.17er Stand du bist lohnt sich aber auch ein Komplett-Update. Es wurden wie unter http://wiki.adventure-php-framework.org ... 6_auf_1.17 beschrieben viele Klassen umbenannt was bei einem Einzel-Update ggf. zu Fehlern führt.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: [1.17] Umbau des Tag-Parsers

Beitrag von jwlighting » 03.02.2013, 13:16:23

Hallo Christian,

ich habe den neuen Code gerade überflogen. Mir kam dabei die Frage in den Sinn, weshalb das vor der Neuerung eigentlich nicht möglich gewesen ist. Verschachtelte Strukturen konnte der Parser doch schon immer verarbeiten. Liegt die eigentliche Neuerung dann nur darin, dass Tags mit gleichem Prefix und Namen ineinander verschachtelt werden können? Und auch da ist mir nicht ganz klar, weshalb das vorher nicht möglich war... :?

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.17] Umbau des Tag-Parsers

Beitrag von dr.e. » 03.02.2013, 13:34:54

Hi Jan,
Mir kam dabei die Frage in den Sinn, weshalb das vor der Neuerung eigentlich nicht möglich gewesen ist. Verschachtelte Strukturen konnte der Parser doch schon immer verarbeiten.
Verschachtelte Strukturen ja, solche mit gleichem Präfix/Namen nicht.
Liegt die eigentliche Neuerung dann nur darin, dass Tags mit gleichem Prefix und Namen ineinander verschachtelt werden können? Und auch da ist mir nicht ganz klar, weshalb das vorher nicht möglich war... :?
Der Grund war einfach der, dass die Implementierung des Parsers erwartet hat, dass ein Tag entweder selbtschließend ist oder direkt nach dem öffnenden ein explizit schließender Tag vorhanden war und innerhalb des Contents kein wiederum öffnender Tag enthalten ist.

Konkretes "Problem" des Parsers bis einschließlich 1.16 war, dass der Suchalgorithmus nicht auf verschachtelte Tags mit gleichem Präfix/Namen vorbereitet war. Für symmetrische Strukturen ist das auch eine recht einfache Angelegenheit, für asymmetrische Strukturen nicht. Aber mit dem aktuellen Stand in 1.17 ist auch das möglich.

Wenn du dir den diff ansiehst, ist vielleicht klar, warum das vorher nicht ging. ;)
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: [1.17] Umbau des Tag-Parsers

Beitrag von jwlighting » 03.02.2013, 13:46:40

Hallo Christian,

vielen Dank für die Erläuterung, jetzt wird mir sofort klar, wo das Problem lag. Mit steht an Arbeit das Wasser momentan bis zum Hals, da ist der Kopf einfach nicht frei genug um bei sowas geduldig und klar zu denken :)

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.17] Umbau des Tag-Parsers

Beitrag von dr.e. » 03.02.2013, 14:07:23

Kein Stress! ;) Der Parser ist schon eine Wissenschaft für sich...
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast