Pular para o conteúdo principal

API de templates

As utilidades de renderização de templates estão disponíveis em ptool.template e p.template.

ptool.template.render

v0.1.0 - Introduced.

ptool.template.render(template, context) renderiza uma string de template no estilo Jinja e retorna o resultado renderizado.

  • template (string, obrigatório): O texto-fonte do template.
  • context (qualquer valor Lua serializável, obrigatório): O contexto do template.
  • Retorna: A string renderizada.

Exemplo:

local template = ptool.unindent([[
| {% if user.active %}
| Hello, {{ user.name }}!
| {% else %}
| Inactive user: {{ user.name }}
| {% endif %}
| Items:
| {% for item in items %}
| - {{ item }}
| {% endfor %}
]])
local result = ptool.template.render(template, {
user = { name = "alice", active = true },
items = { "one", "two", "three" },
})

print(result)

Notas:

  • O contexto precisa ser serializável como valores de dados.
  • Valores Lua como function, thread e userdata não suportado não são aceitos como valores de contexto do template.
  • Valores ausentes usam semântica de undefined encadeável. Isso significa que buscas aninhadas como foo.bar.baz podem ser passadas para filtros como default(...) sem gerar erro. Quando renderizados diretamente sem fallback, valores undefined tornam-se string vazia.
local template = ptool.unindent([[
| {{ foo.bar.baz | default("N/A") }}
]])

print(ptool.template.render(template, {})) -- N/A