Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Failed to load latest commit information.
lib Update syntax and deprecations
test Update API
.gitignore Numericality validator
.travis.yml Use R16B in travis, and mix test and instead of mix Fix
package.exs Add expm package.exs


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.