# Motor de template de emails

## Twig Parser

WoowUp internamente utiliza una versión del motor de templates [Twig](https://twig.symfony.com) ejecutándose en un Sandbox para que el entorno sea completamente seguro de ejecutarse.

A continuación se detallan los tags, filtros y funciones disponibles para utilizar:

## Tags

| Tag | Descripción |
| --- | ----------- |
| if  |             |
| for |             |
| set |             |

## Filtros

Las variables pueden modificarse con **filtros**. Los filtros se separa de las variables por un símbolo pipe "|" y puede tener argumentos opcionales en paréntesis. Los filtros pueden ser encadenados de forma múltiple donde la salida del primer filtro es aplicado al siguiente filtro.

| Filtro         | Descripción                                                                            |
| -------------- | -------------------------------------------------------------------------------------- |
| upper          | Convierte a mayúscula un texto                                                         |
| lower          | Convierte a minúscula un texto                                                         |
| escape         | Escapea un texto en un formato dado                                                    |
| raw            | Imprime el texto sin escapear en entidades HTML                                        |
| slice          | Corta un texto a partir de un inicio y una longitud                                    |
| capitalize     | Convierte a mayúscula la primer letra del texto                                        |
| title          | Convierte a mayúscula la primer letra de cada palabra del texto                        |
| trim           | Elimina ciertos caracteres al inicio, al final o en ambas posiciones de un texto       |
| url\_encode    | Codifica como URL una cadena de texto                                                  |
| default        | Retorna un valor default y el valor de la variable es vacío o nulo                     |
| replace        | Busca un texto y lo reemplaza por otro                                                 |
| number\_format | Formatea un número con separadores de miles y decimales                                |
| truncate       | Corta un texto a una cierta longitud, si lo corta le agrega por default "..." al final |
| first\_word    | Retorna la primera palabra de una String                                               |

## Funciones

Las funciones pueden llamarse para generar contenido. Las funciones son invocadas por su nombre seguido por paréntesis () y pueden contener argumentos de forma opcional.

| Función                             | Descripción                                                    |
| ----------------------------------- | -------------------------------------------------------------- |
| now                                 | Retorna la fecha actual con formato dd/mm/yyyy                 |
| date\_format                        | Formatea una fecha en un cierto formato                        |
| hex                                 | Convierte a hexadecimal un texto                               |
| number\_format                      | Formatea un número con separadores de miles y decimales        |
| product\_by\_sku                    | Busca un producto por SKU                                      |
| purchase\_by\_invoice\_number       | Busca una venta por número de factura                          |
| new\_products\_by\_category         | Busca los productos nuevos por categorías                      |
| best\_sellers\_by\_category         | Busca los productos mas vendidos por categoría                 |
| recommended\_products               | Busca los productos recomendados para un cliente               |
| recommended\_products\_by\_category | Busca los productos recomendados para un cliente por categoría |
| range                               | Genera un listado de números a partir de un intervalo          |
| chunks                              | Divide un array en pedazos                                     |
| json\_encode                        | Encoder en formato JSON un array                               |
| json\_decode                        | Decoder un JSON en un array                                    |
| base64\_encode                      | Encoder en base 64 un texto                                    |
| base64\_decode                      | Decoder texto en base 64                                       |

## Operadores

Los mismos operadores que posee Twig por defecto
