[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: validating Lua data
- From: Bret Victor <bret@...>
- Date: Fri, 29 Dec 2006 07:27:31 +0000 (UTC)
Norman Ramsey <nr <at> eecs.harvard.edu> writes:
> Has anybody thought about the moral equivalent of
> XML DTD or XML Schema for describing valid Lua data?
The function below validates a table against a "schema" table.
It makes sure that all of the keys in your table and subtables appear
in the schema (although not vice-versa, to allow for optional keys),
and that the types are the same.
There are a number of things that could be added (mandatory keys,
better error reporting, string vs number issues) but you can take
it from here.
------------------------------------------
function validate (data,schema)
for k,v in pairs(data) do
if type(k) ~= "number" then -- Ignore array values.
if not schema[k] then
error(k .. " is not in the schema.")
elseif type(v) ~= type(schema[k]) then
error(k .. " should be a " .. type(schema[k]))
end
if type(v) == "table" then validate(v, schema[k]) end
end
end
end
------------------------------------------
schema = {
title = "Window",
dimensions = {
height = 1,
width = 1
},
tabStops = { }
}
data = {
title = "HyperSchnauzer Pro",
dimensions = {
height = 0.5,
width = 8
},
tabStops = { 1, 3, 5, 7 }
}
validate(data,schema)