Hello, everyone!
I made this chained validation module. It's called valua and was originally bundled with another project of mine (Sailor MVC), but since it works separately, I sent it to the LuaRocks repository.
The validation objects are reusable and if a test fails at the beginning of the chain, it will break the chain and won't test the rest of it.
Example:
local valua = require "valua"
local test = valua:new().integer().min(18)
test(23.7) -- false
test(5) -- false