This is an experimental fork of love-api.
It has a similar structure to the original with the following changes:
extra.lua returns a function that the API table can be passed to.
api = require('extra')(require('love_api'))
It makes the following changes:
serialize.lua takes the “extra” table and saves the original table files to disk.
require('serialize')(require('extra')(require('love_api')))
api = require('extra')(require('love-api.love-api'))
table.sort(api.variants, function(a, b) return a.function_.fullname < b.function_.fullname end)
local s = ''
for _, variant in ipairs(api.variants) do
local function getList(t)
local s = ''
for i, a in ipairs(t) do
s = s..a.name
if a.default then
s = s..' ['..a.default..']'
end
if i ~= #t then
s = s..', '
end
end
return s
end
if #variant.returns > 0 then
s = s..getList(variant.returns)..' = '
end
s = s..variant.function_.fullname..'('
if #variant.arguments > 0 then
s = s..getList(variant.arguments)
end
s = s..')\n'
end
print(s)
--[[
return {
version = '0.10.2',
modules = {
{
name = 'modulename',
fullname = 'love.modulename', -- or 'love'
prefix = 'love.' -- or '' for 'love'
description = 'Description.',
descriptiont = {},
minidescription = 'Description.',
minidescriptiont = {},
types = {},
functions = {},
enums = {},
what = 'module',
id = 'love_modulename',
}
},
byfullname = {}, -- Indexed by 'fullname' key
byid = {}, -- Index by 'id' key
everything = {}, -- Every table with a 'what' key
allfullnames = {}, -- modules, functions, methods, callbacks, types, enums
allfunctions = {}, -- functions, methods, callbacks
noncallbackfunctions = {}, -- functions, methods
functions = {},
methods = {},
callbacks = {},
types = {},
enums = {},
arguments = {},
returns = {},
tables = {},
}
enums = {
{
name = 'EnumName',
fullname = name,
description = 'Description.',
descriptiont = {},
minidescription = 'Description.',
minidescriptiont = {},
constants = {
{
name = 'constantname',
description = 'Description.',
descriptiont = {}
minidescription = 'Description.',
minidescriptiont = {}
what = 'constant'
id = 'EnumName1',
module = moduleTable,
enum = enumTable,
}
}
what = 'enum',
id = 'EnumName',
module = moduleTable,
}
}
types = {
{
name = 'TypeName',
fullname = name,
description = 'Description.',
descriptiont = {},
minidescription = 'Description.',
minidescriptiont = {},
functions = {},
parenttype = 'Parenttype' -- Optional
supertypes = {
SupertypeTable,
},
subtypes = {
SubtypeTable,
}
constructors = {
newTypeNameTable,
},
what = 'type',
id = 'TypeName',
module = moduleTable,
}
}
functions = {
{
name = 'functionName',
fullname = 'love.module.functionName',
prefix = 'love.module.',
description = 'Description.',
descriptiont = {},
minidescription = 'Description.',
minidescriptiont = {},
setter = setterTable, -- Optional
getter = getterTable, -- Optional
constructs = typeTable, -- Optional
variants = {
{
description = 'Description.', -- Optional
descriptiont = {},
returns = {},
arguments = {},
what = 'variant',
id = 'love_module_functionName_rb_ast',
module = moduleTable,
function_ = functionTable,
type_ = typeTable,
}
}
what = 'function', -- or 'method' or 'callback'
id = 'love_module_functionName',
module = moduleTable,
type_ = typeTable,
}
}
returns = { -- or arguments
{
type = 'type',
name = 'name',
default = 'default argument', -- If argument and not return
description = 'Description.',
descriptiont = {},
table = { -- If type is 'table'
{
type = 'string',
name = 'name',
default = 'default argument', -- If argument and not return
description = 'Description.',
descriptiont = {},
what = 'returntable', -- or 'argumenttable'
id = 'love_module_functionName_rb_ast_a2_t1',
module = moduleTable,
type_ = typeTable,
function_ = functionTable,
variant = variantTable,
value = returnTable, -- or argumentTable
},
}
what = 'return', -- or 'argument'
id = 'love_module_functionName_rb_ast_r1',
module = moduleTable,
type_ = typeTable,
function_ = functionTable,
variant = variantTable,
}
}