luau-unzip/.lune/util/generator/moonwave.luau

85 lines
No EOL
1.6 KiB
Text

local process = require("@lune/process")
local serde = require("@lune/serde")
local Moonwave = {}
function Moonwave.getFunctionsOfFunctionType(inputArray: { any }, functionType: string)
local resultArray = {}
for _, functionObject in inputArray do
if functionObject.function_type == functionType then
table.insert(resultArray, functionObject)
end
end
return resultArray
end
function Moonwave.extractCommentsIntoJson(): moonwaveDataExportArray
local moonwaveExtractResult = process.spawn("./moonwave-extractor", {
"extract",
"lib",
})
if not moonwaveExtractResult.ok then
print(moonwaveExtractResult.stderr)
return process.exit(1)
else
local moonwaveData = serde.decode("json", moonwaveExtractResult.stdout)
return moonwaveData
end
end
export type PropertyData = {
name: string,
desc: string,
lua_type: string,
source: {
line: number,
path: string,
},
}
export type FunctionData = {
name: string,
desc: string,
since: string?,
unreleased: boolean?,
source: {
path: string,
line: number,
},
function_type: "method" | "static",
returns: {
{
desc: string,
lua_type: string,
}
},
params: {
{
name: string,
desc: string,
lua_type: string,
}
},
}
export type DataExportObject = {
name: string,
functions: { FunctionData },
source: { path: string, line: number },
properties: { PropertyData },
inherited: { [string]: { functions: { FunctionData }, properties: { PropertyData } } }?,
desc: string,
types: unknown,
tags: { string }?
}
export type moonwaveDataExportArray = {
DataExportObject
}
return Moonwave