Ga naar hoofdinhoud

Sjablonen schrijven

SHIPM8-sjablonen gebruiken Handlebars als onderliggende engine. Alle Handlebars-functionaliteit werkt hier, en SHIPM8 voegt daar eigen opmaak- en transformatiehelpers aan toe.

Eenvoudige placeholders

Zet een veldnaam tussen dubbele accolades om de waarde ervan in te voegen.

Sjabloon

Voyage confirmed for {{vesselName}}, calling at {{port}}.

Gegevens

{ "vesselName": "Ocean Star", "port": "Rotterdam" }

Resultaat

Voyage confirmed for Ocean Star, calling at Rotterdam.

Itereren over lijsten

Gebruik #each om over een array te itereren. Binnen het blok verschuift de context naar elk item afzonderlijk.

Sjabloon

Port rotation:
{{#each portCalls}}
- {{port}} ETA {{eta}}
{{/each}}

Gegevens

{
"portCalls": [
{ "port": "Amsterdam", "eta": "2024-03-10" },
{ "port": "Hamburg", "eta": "2024-03-13" },
{ "port": "Antwerp", "eta": "2024-03-15" }
]
}

Resultaat

Port rotation:
- Amsterdam ETA 2024-03-10
- Hamburg ETA 2024-03-13
- Antwerp ETA 2024-03-15

Buiten een lus reiken (root en parent)

Binnen een #each-blok verandert de scope naar het huidige item. Gebruik @root om het object op het hoogste niveau te bereiken, of ../ om één niveau omhoog te gaan naar de bovenliggende scope.

Root-selector

Vessel: {{vesselName}}
{{#each portCalls}}
{{port}} — vessel: {{@root.vesselName}}
{{/each}}

Parent-selector

Vessel: {{vesselName}}
{{#each portCalls}}
{{port}} — vessel: {{../vesselName}}
{{/each}}

Beide leveren hetzelfde resultaat op:

Vessel: Blue Marlin
Amsterdam — vessel: Blue Marlin
Hamburg — vessel: Blue Marlin
Antwerp — vessel: Blue Marlin

Helpers combineren (subexpressies)

Helpers kunnen in elkaar worden genest via haakjes — Handlebars noemt dit subexpressies. De binnenste expressie wordt als eerste uitgewerkt en het resultaat wordt doorgegeven aan de buitenste helper.

{{leastDecimals (numberFormat cargo.tonnage 'F03')}}

Met cargo.tonnage = 45000.500 formatteert dit het getal eerst naar 45000.500, en worden de overbodige nullen daarna weggehaald, zodat 45000.5 overblijft.

Zie de Handlebars-documentatie voor de volledige syntaxis van subexpressies.