# `Otera.Filters`
[🔗](https://github.com/georgeguimaraes/otera/blob/v0.1.0/lib/otera/filters.ex#L1)

The builtin filters of Jinja2, with their Python behavior.

The filters are `abs`, `attr`, `batch`, `capitalize`, `center`, `count`, `default` (`d`), `dictsort`, `escape` (`e`), `filesizeformat`, `first`, `float`, `format`, `groupby`, `indent`, `int`, `items`, `join`, `last`, `length`, `list`, `lower`, `map`, `max`, `min`, `pprint`, `random`, `reject`, `rejectattr`, `replace`, `reverse`, `round`, `safe`, `select`, `selectattr`, `slice`, `sort`, `string`, `striptags`, `sum`, `title`, `tojson`, `trim`, `truncate`, `unique`, `upper`, `urlencode`, `wordcount`, `wordwrap` and `xmlattr`.

Without autoescape, `safe` only converts its value to a string. `escape` always escapes HTML, as in Jinja2. The filters that give a generator in Jinja2, such as `map` and `select`, give a list.

# `builtin?`

```elixir
@spec builtin?(String.t()) :: boolean()
```

Returns true if `name` is a builtin filter.

# `call`

```elixir
@spec call(String.t(), term(), list(), Otera.Dict.t(), map()) :: term()
```

Applies the builtin filter `name` to `value`. `env` gives the filters and tests that `map` and `select` call.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
