Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master
Failed to load latest commit information.
test Update API
.gitignore Numericality validator
.travis.yml Use R16B in travis, and mix test and instead of mix Fix
mix.exs Fix mix.exs
package.exs Add expm package.exs
package.head.exs Add package file for the head version


Build Status

Validatex is a simple Elixir library for validating (input) data

Validation Primitives

Using records defined in Validatex one can check individual values against validators.

For example:

iex> alias Validatex, as: V
iex> V.Validate.valid?( 10), 1)
iex> V.Validate.valid?( 0), 1) 

Also, if the second argument is not a validator, it will be matched against the first argument:

iex> V.Validate.valid?(1,1)                  
iex> V.Validate.valid?(2,1)
iex> V.Validate.valid?(0, 1)

Custom Validators

One can define custom validators using by implementing Validatex.Validate protocol

  defrecord MyValidator, q: nil

  defimpl Validatex.Validate, for: MyValidator do
     alias MyValidator, as: V
     def valid?(V[], v), do: v

Validation Sheets

Instead of running individual validations, you can define so called "validation sheets" and test them using Validatex.validate.

Validation sheet is a list of validations in the following format:

{name, value, spec}

For example:

 {"", username, 3, to: 16))},
 {"", email, 3, to: 255))},
 {"user.age", age, true)}

Just as an example, if you try to put a string with a non-numeric value into age, you'll get this:

iex> V.validate(plan)
[{"user.age","wrong",Validatex.Numericality[default: 0],:number_expected}]
Something went wrong with that request. Please try again.