LIVR.Validator - Lightweight validator supporting Language Independent Validation Rules Specification (LIVR) Implements latest '2.0 specification'
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)
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)
gem install ruby-livr
Add to Gemfile
gem "ruby-livr"
Vitaliy Yanchuk (@fuksito)
Viktor Turskyi (@koorchik)