Syntax
HeroML kennt genau zwei Zeilentypen. Eingerückt wird mit zwei Leerzeichen pro Ebene.
Blöcke & Felder
Eine Block-Zeile beginnt mit einem Typnamen und optionalen Attributen und öffnet einen Block. Eine Feld-Zeile der Form schlüssel: wert setzt eine Eigenschaft des umschließenden Blocks; alles nach dem Doppelpunkt ist der Wert (reiner Text, der beim Rendern maskiert wird).
heading # Block-Zeile level: 2 # Feld-Zeile text: Aus dem Blog
Intern ist ein Block schlicht ein Objekt { type, attrs, fields, children }. Attribute und Felder werden beim Rendern zu den Eigenschaften des Blocks zusammengeführt.
Attribute
Attribute stehen direkt in der Block-Zeile — praktisch für kurze Werte. Drei Formen sind möglich:
| Form | Beispiel | Ergibt |
|---|---|---|
| unquotiert | feature icon=bolt | icon = "bolt" |
| in Anführungszeichen | button label="Jetzt kaufen" | Werte mit Leerzeichen |
| Flag | section alt | alt = true |
Attribut und Feld sind gleichwertig; für längere oder mehrzeilige Werte empfiehlt sich das Feld.
Verschachtelung
Tiefer eingerückte Zeilen sind Kinder des darüberliegenden Blocks. So entstehen Strukturen — etwa Schaltflächen innerhalb eines Aufmachers oder Features in einem Raster.
features cols=3
feature
title: Reportagen
text: Ausführliche Geschichten mit Zeit zum Erzählen.
feature
title: Fotostrecken
text: Bilder, die einen Ort spürbar machen.
feature
title: Service
text: Konkrete Tipps für die eigene Reise.
Ausführliche Geschichten mit Zeit zum Erzählen.
Bilder, die einen Ort spürbar machen.
Konkrete Tipps für die eigene Reise.
Roh-Blöcke
Die Blöcke markdown, html und code übernehmen ihren eingerückten Inhalt wörtlich (mehrzeilig) — ideal für Fließtext.
markdown # Überschrift Ein **Absatz** mit mehreren Zeilen.
markdown und html werden vor der Ausgabe bereinigt (Skripte, Event-Handler und javascript:-Links werden entfernt).Platzhalter
In Feldwerten greift {{ … }} auf ausgewählte Werte zu; die Ausgabe wird stets maskiert.
| Platzhalter | Wert |
|---|---|
{{ site.title }} | Seitentitel (aus den Einstellungen) |
{{ site.description }} | Seitenbeschreibung |
{{ post.title }} | Titel des aktuellen Beitrags (Einzelansicht) |
{{ page.title }} | Titel der aktuellen Seite |
{{ year }} | aktuelles Jahr |