Skip to content

fuksito/ruby-livr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

LIVR Validator

LIVR.Validator - Lightweight validator supporting Language Independent Validation Rules Specification (LIVR) Implements latest '2.0 specification'

SYNOPSIS

Common usage:

gem 'ruby-livr'
require 'livr'

validator = LIVR::Validator.new({
    'name'      => 'required',
    'email'     => [ 'required', 'email' ],
    'gender'    => { 'one_of' => ['male', 'female'] },
    'phone'     => { 'max_length' => 10 },
    'password'  => [ 'required', { 'min_length' => 10} ],
    'password2' => { 'equal_to_field' => 'password' }
});

valid_data = validator.validate(user_data)

if valid_data
    save_user(validData)
else
    handle_errors(validator.get_errors)
end

You can use modifiers separately or can combine them with validation:

validator = LIVR::Validator.new({
    'email' => [ 'required', 'trim', 'email', 'to_lc' ]
});

Feel free to register your own rules:

You can use aliases (prefferable, syntax covered by the specification) for a lot of cases:

validator = LIVR::Validator.new({
    'password' => ['required', 'strong_password']
});

validator.register_aliased_rule({
    'name' => 'strong_password',
    'rules' => { 'min_length' => 6},
    'error' => 'WEAK_PASSWORD'
});

Or you can write more sophisticated rules directly:

validator = LIVR::Validator.new({
    'password' => ['required', 'strong_password']
})

class StrongPassword
    def call(value, *other_args)
        # We already have "required" rule to check that the value is present
        return if value == nil || value == ""
        if value.length < 6
            return 'WEAK_PASSWORD'
        end
    end
end

validator.register_rules(strong_password: StrongPassword)

DESCRIPTION

This ruby gem is an implementation of LIVR Specification. See 'LIVR Specification' for detailed documentation and list of supported rules.

Features:

  • Rules are declarative and language independent
  • Any number of rules for each field
  • Return together errors for all fields
  • Excludes all fields that do not have validation rules described
  • Has possibility to validatate complex hierarchical structures
  • Easy to describe and undersand rules
  • Returns understandable error codes(not error messages)
  • Easy to add own rules
  • Rules are be able to change results output ("trim", "nested_object", for example)
  • Multipurpose (user input validation, configs validation, contracts programming etc)

INSTALL

as a gem

gem install ruby-livr

in rails

Add to Gemfile

gem "ruby-livr"

AUTHORS

Ruby implementation

Vitaliy Yanchuk (@fuksito)

Idea and specification

Viktor Turskyi (@koorchik)

About

Language Independent Validation Rules 2.0

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages