# Filtrex v0.5.0 - Table of Contents A library for performing and validating complex filters from a client (e.g. smart filters) ## Modules - [Filtrex](Filtrex.md): Filtrex consists of the following primary components - [Filtrex.AST](Filtrex.AST.md): `Filtrex.AST` is a helper for building out the ecto macro query expression from a set of conditions. Typically, it shouldn't need to be called direcly. - [Filtrex.Condition](Filtrex.Condition.md): `Filtrex.Condition` is an abstract module for parsing conditions. To implement your own condition, add `use Filtrex.Condition` in your module and implement the three callbacks - [Filtrex.Condition.Boolean](Filtrex.Condition.Boolean.md): `Filtrex.Condition.Boolean` is a specific ondition type for handling boolean flags. It allows an empty string for false value as well as string representations "true" and "false". Its comparators only consist of "equals" or "does not equal". There are no configuration options for the boolean condition. - [Filtrex.Condition.Date](Filtrex.Condition.Date.md): `Filtrex.Condition.Date` is a specific condition type for handling date filters with various comparisons. - [Filtrex.Condition.DateTime](Filtrex.Condition.DateTime.md): `Filtrex.Condition.DateTime` is a specific condition type for handling datetime filters with various comparisons. - [Filtrex.Condition.Number](Filtrex.Condition.Number.md): `Filtrex.Condition.Number` is a specific condition type for handling integer and decimal filters with various configuration options. - [Filtrex.Condition.Text](Filtrex.Condition.Text.md): `Filtrex.Condition.Text` is a specific condition type for handling text filters with various comparisons. There are no configuration options for the date condition. - [Filtrex.Encoder](Filtrex.Encoder.md): 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. - [Filtrex.Fragment](Filtrex.Fragment.md): `Filtrex.Fragment` is a simple struct used to hold an `expression` and `values`. It is used by `Filtrex.Encoder.encode/1` to turn conditions into ecto queries. Example: ``` %Filtrex.Fragment{expression: "(text = ?)", values: ["Buy Milk"]} ``` - [Filtrex.Params](Filtrex.Params.md): `Filtrex.Params` is a module that parses parameters similar to Phoenix, such as - [Filtrex.Type.Config](Filtrex.Type.Config.md): This configuration struct is for passing options at the top-level (e.g. `Filtrex.parse/2`) in a list. See `defconfig/1` for a more specific example. - [Filtrex.Utils.Encoder](Filtrex.Utils.Encoder.md): Helper methods for implementing the `Filtrex.Encoder` protocol.