Ravel v0.0.5 Ravel

Ravel is validation library for elixir. Mainly created for learning purposes.

Usage

Maps and named lists can be used as containers for data that must be validated.

iex> data = [field: "value"]
iex> rules = {:fields_set, [field: {:rules, [%Ravel.Rules.Required{}]}]}
iex> Ravel.validate data, rules
:ok

Summary

Functions

Is used to validate passed data with passed rules

Types

data :: list | map
field_rules :: {:rules, list | rules}
response :: :ok | list
rules :: {:fields_set, list | map}

Functions

validate(data, arg)

Specs

validate(data, rules | field_rules) :: response

Is used to validate passed data with passed rules.

iex> Ravel.validate [field_name: nil], {:fields_set, [field_name: {:rules, [%Ravel.Rules.Required{}]}]}
[field_name: [%Ravel.Rules.Required{}]]

iex> Ravel.validate [field_name: "value"], {:fields_set, [field_name: {:rules, [%Ravel.Rules.Required{}]}]}
:ok

iex> Ravel.validate [field_name: "value"], {:fields_set, [field_name: {:rules, [%Ravel.Rules.Required{}, %Ravel.Rules.Minimum{min: 5}]}]}
:ok

iex> Ravel.validate [field_name: "value"], {:fields_set, [field_name: {:rules, [%Ravel.Rules.Required{}, %Ravel.Rules.Minimum{min: 10}]}]}
[field_name: [%Ravel.Rules.Minimum{min: 10}]]

iex> Ravel.validate [field_name: nil, another_field: nil], {:fields_set, [field_name: {:rules, [%Ravel.Rules.Required{}]}, another_field: {:rules, [%Ravel.Rules.Required{}]}]}
[field_name: [%Ravel.Rules.Required{}], another_field: [%Ravel.Rules.Required{}]]

iex> Ravel.validate [field_name: [sub_field: nil]], {:fields_set, [field_name: {:rules, {:fields_set, [sub_field: {:rules, [%Ravel.Rules.Required{}]}]}}]}
[field_name: [sub_field: [%Ravel.Rules.Required{}]]]

iex> Ravel.validate [field_name: [sub_field: "value"]], {:fields_set, [field_name: {:rules, {:fields_set, [sub_field: {:rules, [%Ravel.Rules.Required{}]}]}}]}
:ok