Pular para o conteúdo

Templates

Interpolação com text/template do Go em uma apresentação: valores, slides gerados, números de página, includes.

A apresentação é um text/template do Go, avaliado antes de o Markdown ser analisado. Tudo o que a linguagem de templates do Go tem — ações, pipelines, if, range, with, variáveis — funciona em uma apresentação.

Dados

O ponto (dot) do template contém as chaves do front matter, depois as chaves do mapeamento data:, depois os dados informados na linha de comando ou em slides.yaml — cada um sobrescrevendo o anterior.

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

# {{ .title }}

Presented by the {{ .team }} team.

Pela linha de comando:

FlagFornece
--data file.yamlum arquivo YAML ou JSON de dados (repetível)
--set key=valueum valor (repetível)

Gerar slides

O corpo inteiro é um só template, então um range que escreve --- escreve slides:

{{ range .releases }}
---

# {{ .version }}

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

Página e total

{{ page }} e {{ total }} são o número do slide e o número de slides. Eles só são conhecidos depois que a apresentação foi dividida, então são preenchidos nesse momento — uma apresentação gerada conta os slides que gerou.

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

Include

{{ include "parts/agenda.md" }} insere outro arquivo, relativo à apresentação.

O código é deixado em paz

Blocos de código delimitados e trechos de código em linha são postos de lado antes de o template rodar e restaurados literalmente, então um slide sobre templates Go pode mostrar {{ .Name }} sem escapá-lo.

Limites

A execução dos templates tem um orçamento de passos, para que uma apresentação cujos templates aninham range sobre listas de dados grandes não possa manter o renderizador ocupado por minutos. Passados 1.048.576 passos (iterações de laço e chamadas de template, compartilhados com os includes de uma mesma expansão) ou 10 s, a apresentação é recusada com o diagnóstico template.limit em vez de travar. Um passo custa cerca de 260 ns, então as apresentações comuns ficam bem abaixo do limite. Desde a v0.17.1.

Desativar

--no-template lê a apresentação como Marp simples: {{ é texto.

Created on by tannevaled

Modified on by tannevaled