1. Constantes:

Hello World!.



2. Variables:

{{ data.name }} had a little {{ data.animal }}.



3. Comentarios:
{# note: commented-out template because we no longer use this
    {% for user in users %}
        ...
    {% endfor %}
#}



4. Control de flujo: If, elif, else

{% if data.truth %}
 This is true
{% else %}
 This is false
{% endif %}



5. Bucles for lopp:

{% for color in data.colors %}
- {{ color }}
{% endfor %}



6. Statements: Acciones

{% do data.colors.append('lima') %}

Veamos que efectivamente añade el color:

2222{% for color in data.colors %}
- {{ color }}{% endfor %}



7. Escape characters:
{% raw %}
    <ul>
    {% for item in seq %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endraw %}



8. Incluir otra plantilla:
{% include 'header.txt' %}



9. Uso de funciones tests en el control de flujo (verdadero, falso)
{% if data.truth is verdadero %}
  Esto es verdadero
{% else %}
  Esto debe ser falso
{% endif %}



10. Eliminar líneas en blanco con el uso del menos:
{%- if data.truth2 is falso -%}
  Esto es falso
{%- else -%}
  Esto debe ser verdadero
{% endif %}



11. Uso de filtros en variables:
{{ data.name | myUpper }}



12. Uso de filtros con parámetros en variables:
{{ data.name | myUpper('_misufijito') }}



13. Aplicación de filtros a un bloque:
{% filter myUpper %}
  {% for color in data.colors %}
- {{ color }}
  {% endfor %}
{% endfilter %}



14. Definición de variables locales:
{% set navigation = ['index.html', 'about.html'] %}

{% for nav in navigation %}
- {{ nav }}
{% endfor %}



15. Definición de macros [reutilización de código]
{% macro input(name, value='', type='text', size=20) -%}
    <p><input type="{{ type }}" name="{{ name }}" value="{{value|e }}" size="{{ size }}"></p>
{%- endmacro %}



16. Uso de macros [reutilización de código]
{{ input('username') }}
{{ input('password', type='password') }}



17. Importación de macros desde otros ficheros [reutilización de código]
{% import 'macros.txt' as forms %}



18. Ejemplo de uso de macros importadas [reutilización de código]
<dl>
    <dt>Username</dt>
    <dd>{{ forms.input('username') }}</dd>
    <dt>Password</dt>
    <dd>{{ forms.input('password', type='password') }}</dd>
</dl>
<p>{{ forms.textarea('comment') }}</p>



19. Renombrado de macros importadas [reutilización de código]
{% from 'macros.txt' import input as input_field, textarea %}



20. Ejemplo de uso de macros renombradas e importadas [reutilización de código]
<dl>
    <dt>Username</dt>
    <dd>{{ input_field('username') }}</dd>
    <dt>Password</dt>
    <dd>{{ input_field('password', type='password') }}</dd>
</dl>
<p>{{ textarea('comment') }}</p>



21. Definición de una macro que incluye contenido definido desde el exterior [reutilización de código]
{% macro render_dialog(title, class='dialog') -%}
    <div class="{{ class }}">
        <h2>{{ title }}</h2>
        <div class="contents">
            {{ caller() }}
        </div>
    </div>
{%- endmacro %}



22. Uso de una macro con contenido definido desde el exterior [reutilización de código]
{% call render_dialog('Hello World') %}
    This is a simple dialog rendered by using a macro and
    a call block.
{% endcall %}



23. Definición de una macro que incluye contenido definido desde el exterior parametrizado desde el interior [reutilización de código]
{% macro dump_users(users) -%}
    <ul>
    {%- for user in users %}
        <li><p>{{ user.username|e }}</p>{{ caller(user) }}</li>
    {%- endfor %}
    </ul>
{%- endmacro %}



24. Uso de una macro que incluye contenido definido desde el exterior parametrizado desde el interior [reutilización de código]
{% call(user) dump_users(data.list_of_user) %}
    <dl>
        <dl>Realname</dl>
        <dd>{{ user.realname|e }}</dd>
        <dl>Description</dl>
        <dd>{{ user.description }}</dd>
    </dl>
{% endcall %}

