# `DripDrop.Templates.Renderer`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/templates/renderer.ex#L1)

Renders templates and validates channel payload shapes.

# `render_error`

```elixir
@type render_error() :: %{kind: :permanent, reason: term()}
```

# `render`

```elixir
@spec render(binary() | map(), map(), atom() | binary()) ::
  {:ok, map()} | {:error, render_error()}
```

Renders a binary or map template and validates it for the target channel.

# `render_step`

```elixir
@spec render_step(map(), term(), map()) :: {:ok, map()} | {:error, render_error()}
```

Renders a step template with enrollment and hook data.

# `render_text`

```elixir
@spec render_text(binary(), map()) :: {:ok, binary()} | {:error, render_error()}
```

Renders a single Liquid text template.

# `validate`

```elixir
@spec validate(binary() | map(), atom() | binary()) ::
  :ok | {:error, [{integer(), integer(), binary()}]}
```

Validates Liquid syntax and MJML compilation for an optional email template.

---

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