hotti: Eigene Templates

Beitrag lesen

hi,

Umsetzen könntest Du das entweder mit Regulären Ausdrücken oder mit einem Parser, Ersteres ist einfacher, Beispiel fürs Loop: Alles was zwischen %loop_*% und %endloop% liegt, wird ermittelt

Das bringt dich in der RegEx-Variante aber leicht in Schwierigkeiten, wenn Schleifen verschachtelt werden.

Ja, da hast Du vollkommen recht.

Wenn du den Ende-Marker analog zum Start-Marker „benennst“ – %loop_FOO% und korrespondierendes %endloop_FOO% – lässt sich zumindest das umgehen (wobei man im regulären Ausdruck dann bspw. eine Back Reference nutzen könnte).

Das wäre die Lösung. Und machbar ist das alles auch für if/else.

Praktisch meine ich jedoch, dass ein Template so einfach wie möglich aufgebaut sein soll, insbesondere dann, wenn es in die Hände von Kunden gegeben wird. Also ich meine, wenn ein Template dahin tendiert, der Programmlogik immer ähnlicher zu werden, dass es in solchen Fällen besser via Programmlogik ausgetauscht werden sollte.

Geschachtelte Schleifen sind oft erforderlich, z.B. zum Aufbau einer Tabelle für einen Kalendermonat. Wenn die TE nur einfache Schleifen kann, geht das entweder mit mehreren Templates zu lösen oder die Schachtelung wird über dem Code abgebildet mit nur einem Template.

Auf jeden Fall sollte eine TE Kontrollstrukturen innerhalb einer Schleife können. Bei meinem Framework kann ich auch die TE komplett austauschen, das Datenversteck (Platzhalter-Hash) ist bei mir kompatibel zu HTML::Template, wenn's erforderlich ist, binde ich das zur Laufzeit über die Factory ein.

Es gibt immer Gründe für eigene Entwicklungen. Ich hatte mal einen Nachbarn, der hat sich sogar eine Kreissäge selbst zusammengeschweißt, weil seine Brennholzlieferung zeitlich nicht zum Leihplan der Dorfkreissäge passte ;)

Viele Grüße,
Horst Heizer