LIVR
Reference
Class functions & members
new( rules [, is_auto_trim] )
Creates an validator instance from the table rules
.
When the boolean is_auto_trim
is missing, the global default_auto_trim
is used.
register_default_rules( rules )
Registers additional rules
. rules
is a table, where keys are string rule name
and values are function rule builder.
register_aliased_default_rule( alias )
Registers an aliased rule.
alias
is a table with:
- a required key
name
, the associated value is a string - a required key
rules
, the associated value is a table or a string - an optional key
error
, the associated value is a string
default_rules
global table containing all default rule_builders.
default_auto_trim
global boolean, its default value is false
.
Instance methods
prepare()
Check and "compile" an newly instance (the result is memoized for further calls of method validate
).
On success returns the instance.
On error throws it.
validate( input )
Validates the table user input
.
On success returns a table which contains only data that has described validation rules.
On error returns nil
and a table which contains all errors.
register_rules( rules )
Registers additional rules
. rules
is a table, where keys are string rule name
and values are function rule builder.
register_aliased_rule( alias )
Registers an aliased rule.
alias
is a table with:
- a required key
name
, the associated value is a string - a required key
rules
, the associated value is a table or a string - an optional key
error
, the associated value is a string
get_rules()
Returns a table containing all rule_builders for the validator.
Examples
local livr = require 'LIVR.Validator'
-- Common usage
livr.default_auto_trim = true
local validator = livr.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' }
}
local valid_data, errors = validator:validate(user_data)
if valid_data then
save_user(valid_data)
end
-- You can use modifiers separately or can combine them with validation:
local validator = livr.new{
email = { 'required', 'trim', 'email', 'to_lc' }
}
-- Feel free to register your own rules
-- You can use aliases(preferable, syntax covered by the specification) for a lot of cases:
local validator = livr.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
local validator = livr.new{
password = { 'required', 'strong_password' }
}
validator:register_rules{
strong_password = function ()
return function (value)
if value ~= nil and value ~= '' then
if type(value) ~= 'string' then
return value, 'FORMAT_ERROR'
end
if #value < 6 then
return value, 'WEAK_PASSWORD'
end
end
return value
end
end
}