# peri v0.9.0 - Table of Contents

> A Plug'n Play schema validator library, focused on raw data structures

## Pages

- [Peri](readme.md)

- Guides
  - [Types Reference](types.md)
  - [Validation Patterns](validation.md)
  - [Ecto Integration](ecto.md)
  - [Data Generation](generation.md)
  - [JSON Schema](json_schema.md)
  - [Refs](refs.md)

## Modules

- [Peri](Peri.md): Peri is a schema validation library for Elixir, inspired by Clojure's Plumatic Schema.
It provides a flexible and powerful way to define and validate data structures using schemas.
The library supports nested schemas, optional fields, custom validation functions, and various type constraints.
- [Peri.Ecto.Type](Peri.Ecto.Type.md): Responsible to convert between Peri <> Ecto types definitions
- [Peri.Ecto.Type.Any](Peri.Ecto.Type.Any.md): Represents any type. Passes data to Cassandra as is.
- [Peri.Ecto.Type.Atom](Peri.Ecto.Type.Atom.md): Custom Ecto type for storing atoms as strings
- [Peri.Ecto.Type.Either](Peri.Ecto.Type.Either.md): Custom Ecto type for storing either of two types
- [Peri.Ecto.Type.OneOf](Peri.Ecto.Type.OneOf.md): Custom Ecto type for storing one of many types, aka sum types
- [Peri.Ecto.Type.PID](Peri.Ecto.Type.PID.md): Custom Ecto type for storing PIDs, use with caution
- [Peri.Ecto.Type.Tuple](Peri.Ecto.Type.Tuple.md): Custom Ecto type for storing tuples with multiple types/elements
- [Peri.Generatable](Peri.Generatable.md): A module for generating sample data based on Peri schemas using StreamData.
- [Peri.JSONSchema.Decoder](Peri.JSONSchema.Decoder.md): Decodes a JSON Schema (Draft 7) map into a Peri schema definition.
- [Peri.JSONSchema.Encoder](Peri.JSONSchema.Encoder.md): Encodes a Peri schema definition into a JSON Schema (Draft 7) map.
- [Peri.Parser](Peri.Parser.md): The `Peri.Parser` module is responsible for managing the state during schema validation. 
It centralizes functions to handle updating data, adding errors, and managing the path within 
the data structure being validated.
- [Peri.Walker](Peri.Walker.md): Depth-first schema rewriter.

- Exceptions
  - [Peri.Error](Peri.Error.md): Defines the structure and functions for handling validation errors in the Peri schema validation library.
  - [Peri.InvalidSchema](Peri.InvalidSchema.md): Exception raised when an invalid schema is encountered.

