[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: validating Lua data
- From: manel <lista@...>
- Date: Fri, 29 Dec 2006 13:17:13 +0100 (CET)
Hello all,
A very good routine validate. Here is another different version
I obtained by transforming print_r (from the wiki). As I have
several tables to verify I prefer not to call error, but to return
true or false, and print the errors in stdin. At the end of validation
if some returned errors are true I can abort the program.
Apart it is convenient to name the table in test with the aim to know
where is the problem:
-- verifies if table t has at least the same fields as
-- indicated in table o and of same type
local function table_verify(o, t, name, done)
local key, o1
local err = false
done = done or {}
for key, o1 in pairs(o) do
if type(o1) == "table" and not done[value] then
done[o1] = true
if t[key] == nil then
print(name .. "." .. key .. ": does not exist or incorrect")
err = true
else
err = err or table_verify(o1, t[key], name .. "." .. tostring(key), done)
end
else
if t[key] == nil or type(o1) ~= type(t[key]) then
print(name .. "." .. key .. ": does not exist or incorrect")
err = true
end
end
end
return err
end
-- schema and data assignations ...
table_verify(schema, data, "data")
------------------------------------------
I recognize validate as more Lua than table_verify but both work well.
Manel.