-
Notifications
You must be signed in to change notification settings - Fork 55
Description
Currently, one has to check if an optional table (i.e. functions, types, enums, returns, arguments, constructors, supertypes, subtypes) exists before looping though it, like this:
if variant.arguments then
for _, argument in ipairs(variant.arguments) do
end
endI think it would be nicer to use if had an empty table instead of nil, so things could be looped through without checking if they exist first.
To avoid adding unnecessary stuff to the files, I suggest that the empty tables be added after the table is created, i.e.:
local api = {
-- etc.
}
local function functions(f)
for _, function_ in ipairs(f) do
for _, variant in ipairs(function_.variants) do
if not variant.returns then variant.returns = {} end
if not variant.arguments then variant.arguments = {} end
end
end
end
local function types(t)
for _, type_ in ipairs(t) do
if not type_.functions then type_.functions = {} end
if not type_.constructors then type_.constructors = {} end
if not type_.supertypes then type_.supertypes = {} end
if not type_.subtypes then type_.subtypes = {} end
functions(type_.functions)
end
end
functions(api.functions)
functions(api.callbacks)
types(api.types)
for _, module_ in ipairs(api.modules) do
if not module_.functions then module_.functions = {} end
if not module_.types then module_.types = {} end
if not module_.enums then module_.enums = {} end
functions(module_.functions)
types(module_.types)
end
return apiThis change can break things if the script using it is checking to see if something exists for purposes other than looping, so sometimes if variant.arguments then has to become if #variant.arguments > 0 then.
I don't want to make this change now and unexpectedly break people's scripts, but I think it's a worthwhile change, so maybe scripts using the current love-api table could use the above code to test and see if it breaks their code (and enjoy simplifying their code because of the change!), and if it all works then love-api could be changed.
I've updated html-generator.lua to use this empty table format, I'll make a pull request for it.