# `Filtrex.Encoder`
[🔗](https://github.com/rcdilorenzo/filtrex/blob/main/lib/filtrex/encoder.ex#L1)

Encodes a condition into `Filtrex.Fragment` as an expression with values.
Implementing this protocol is required for any new conditions.
See `Filtrex.Utils.Encoder` for helper methods with this implementation.

Example:
```
defimpl Filtrex.Encoder, for: Filtrex.Condition.Text do
  def encode(%Filtrex.Condition.Text{column: column, comparator: "equals", value: value}) do
    %Filtrex.Fragment{expression: "#{column} = ?", values: [value]}
  end
end
```

# `t`

```elixir
@type t() :: term()
```

All the types that implement this protocol.

# `encode`

```elixir
@spec encode(Filter.Condition.t()) :: [String.t() | [any()]]
```

The function that performs the encoding

---

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