Rolf B: Token Replacement

Beitrag lesen

Hallo MB,

ja, da hätte ich wohl genauer lesen müssen.

D.h. deine Scriptsprache kennt Klassen und Instanzen von Klassen?

Der einfachste Fall, für den man keine Klassifikation wie {{user:address}} braucht, ist eine 1:1 Ersetzung. D.h. du konvertierst den an add übergebenen Wert in einen String und ersetzt das Token dadurch. Alles andere braucht ein Muster.

Deine Token-Klasse (die vielleicht besser Template heißt?) kann einige vordefinierte Templates mitbringen. {{name:italic}} oder {{beruf::bold}} zum Beispiel, die dann durch <i>$name</i> oder <b>$beruf</b> ersetzt werden. Aber das ist eigentlich nicht sinnvoll. SOLCHE Formatierungen baust Du besser gleich ins Template ein: <i class='name'>{{name}}</i> und dann nur Token::add('name', 'Müller').

Deine Adresse ist etwas, was ich "break separated values" nennen würde. D.h. Du hast eine Liste von Werten und sie sollen durch einen bestimmten String voneinander getrennt werden. Hier gehört, finde ich, eine Zweiteilung hin. Aus dem kommaseparierten String muss ein Array werden (wenn deine Sprache das kennt), das sollte außerhalb des Templates passieren. Und die Array-Elemente müssen formatiert werden, das gehört ins Template.

Also einmal - in PHP-Schreibweise:

Template::add('address', explode(',', $addres));

und im Template

<address>{{address:implode:<br>}}</address>

Das ist nur eine Idee, wie man den Separator festlegen könnte.

Dem entgegen stehen echte Listen, die Du mit <ul> und <li> formatieren willst, das musst Du anders lösen. Dafür brauchst Du Iterationsstrukturen:

<ul>
{{items:array:%item}}
  <li>{{%item}}</li>
{{/array}}
</ul>

Nur eine Beispielsyntax. Das Templateelement items ist ein Array, die Template-engine durchläuft es und weist die Werte dem internen Symbol %item zu. Das steht dann innerhalb des Durchlaufs als Wert zur Verfügung.

Viel Spaß 😀

Rolf

--
sumpsi - posui - obstruxi