Перейти до вмісту

Шаблони

Інтерполяція text/template Go у презентації: значення, згенеровані слайди, номери сторінок, включення.

Презентація — це text/template Go, що обчислюється до розбору Markdown. Усе, що має мова шаблонів Go — дії, конвеєри, if, range, with, змінні — працює в презентації.

Дані

Крапка шаблону містить ключі front matter, потім ключі його відображення data:, потім дані, задані в командному рядку або в slides.yaml — кожне перевизначає попереднє.

---
marp: true
title: Quarterly review
data:
  team: Platform
---

# {{ .title }}

Presented by the {{ .team }} team.

З командного рядка:

ПрапорецьДає
--data file.yamlфайл даних YAML або JSON (можна повторювати)
--set key=valueодне значення (можна повторювати)

Генерація слайдів

Усе тіло — це один шаблон, тож range, що пише ---, пише слайди:

{{ range .releases }}
---

# {{ .version }}

{{ range .changes }}- {{ . }}
{{ end }}
{{ end }}

Сторінка й підсумок

{{ page }} та {{ total }} — це номер слайда та кількість слайдів. Вони відомі лише після того, як презентацію розбито на слайди, тому заповнюються саме тоді — згенерована презентація рахує слайди, які вона згенерувала.

<!-- footer: "{{ page }} / {{ total }}" -->

Include

{{ include "parts/agenda.md" }} вставляє інший файл відносно презентації.

Код не чіпають

Блоки коду та рядкові фрагменти коду відкладаються вбік перед запуском шаблону й відновлюються дослівно, тож слайд про шаблони Go може показати {{ .Name }} без екранування.

Обмеження

Виконання шаблону має бюджет кроків, щоб презентація, шаблони якої вкладають range над великими списками даних, не могла хвилинами тримати рендерер зайнятим. Після 1 048 576 кроків (ітерації циклів і виклики шаблонів, спільні з include одного розгортання) або 10 с презентацію відхиляють з діагностикою template.limit замість зависання. Крок коштує близько 260 нс, тож звичайні презентації лишаються далеко від межі. Починаючи з v0.17.1.

Вимкнення

--no-template читає презентацію як звичайний Marp: {{ — це текст.

Created on by tannevaled

Modified on by tannevaled