parent
7c717fe6df
commit
96e0b26912
@ -1231,10 +1231,6 @@ local function DumpAPIHtml(a_API)
|
||||
return (Hook1.Name < Hook2.Name);
|
||||
end
|
||||
);
|
||||
|
||||
-- Read in the descriptions:
|
||||
LOG("Reading descriptions...");
|
||||
ReadDescriptions(a_API);
|
||||
ReadHooks(Hooks);
|
||||
|
||||
-- Create a "class index" file, write each class as a link to that file,
|
||||
@ -1329,6 +1325,126 @@ end
|
||||
|
||||
|
||||
|
||||
--- Returns the string with extra tabs and CR/LFs removed
|
||||
local function CleanUpDescription(a_Desc)
|
||||
-- Get rid of indent and newlines, normalize whitespace:
|
||||
local res = a_Desc:gsub("[\n\t]", "")
|
||||
res = a_Desc:gsub("%s%s+", " ")
|
||||
|
||||
-- Replace paragraph marks with newlines:
|
||||
res = res:gsub("<p>", "\n")
|
||||
res = res:gsub("</p>", "")
|
||||
|
||||
-- Replace list items with dashes:
|
||||
res = res:gsub("</?ul>", "")
|
||||
res = res:gsub("<li>", "\n - ")
|
||||
res = res:gsub("</li>", "")
|
||||
|
||||
return res
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--- Writes a list of methods into the specified file in ZBS format
|
||||
local function WriteZBSMethods(f, a_Methods)
|
||||
for _, func in ipairs(a_Methods or {}) do
|
||||
f:write("\t\t\t[\"", func.Name, "\"] =\n")
|
||||
f:write("\t\t\t{\n")
|
||||
f:write("\t\t\t\ttype = \"method\",\n")
|
||||
if ((func.Notes ~= nil) and (func.Notes ~= "")) then
|
||||
f:write("\t\t\t\tdescription = [[", CleanUpDescription(func.Notes or ""), " ]],\n")
|
||||
end
|
||||
f:write("\t\t\t},\n")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--- Writes a list of constants into the specified file in ZBS format
|
||||
local function WriteZBSConstants(f, a_Constants)
|
||||
for _, cons in ipairs(a_Constants or {}) do
|
||||
f:write("\t\t\t[\"", cons.Name, "\"] =\n")
|
||||
f:write("\t\t\t{\n")
|
||||
f:write("\t\t\t\ttype = \"value\",\n")
|
||||
if ((cons.Desc ~= nil) and (cons.Desc ~= "")) then
|
||||
f:write("\t\t\t\tdescription = [[", CleanUpDescription(cons.Desc or ""), " ]],\n")
|
||||
end
|
||||
f:write("\t\t\t},\n")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--- Writes one MCS class definition into the specified file in ZBS format
|
||||
local function WriteZBSClass(f, a_Class)
|
||||
assert(type(a_Class) == "table")
|
||||
|
||||
-- Write class header:
|
||||
f:write("\t", a_Class.Name, " =\n\t{\n")
|
||||
f:write("\t\ttype = \"class\",\n")
|
||||
f:write("\t\tdescription = [[", CleanUpDescription(a_Class.Desc or ""), " ]],\n")
|
||||
f:write("\t\tchilds =\n")
|
||||
f:write("\t\t{\n")
|
||||
|
||||
-- Export methods and constants:
|
||||
WriteZBSMethods(f, a_Class.Functions)
|
||||
WriteZBSConstants(f, a_Class.Constants)
|
||||
|
||||
-- Finish the class definition:
|
||||
f:write("\t\t},\n")
|
||||
f:write("\t},\n\n")
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--- Dumps the entire API table into a file in the ZBS format
|
||||
local function DumpAPIZBS(a_API)
|
||||
LOG("Dumping ZBS API description...")
|
||||
local f, err = io.open("mcserver.lua", "w")
|
||||
if (f == nil) then
|
||||
LOG("Cannot open mcserver.lua for writing, ZBS API will not be dumped. " .. err)
|
||||
return
|
||||
end
|
||||
|
||||
-- Write the file header:
|
||||
f:write("-- This is a MCServer API file automatically generated by the APIDump plugin\n")
|
||||
f:write("-- Note that any manual changes will be overwritten by the next dump\n\n")
|
||||
f:write("return {\n")
|
||||
|
||||
-- Export each class except Globals, store those aside:
|
||||
local Globals
|
||||
for _, cls in ipairs(a_API) do
|
||||
if (cls.Name ~= "Globals") then
|
||||
WriteZBSClass(f, cls)
|
||||
else
|
||||
Globals = cls
|
||||
end
|
||||
end
|
||||
|
||||
-- Export the globals:
|
||||
if (Globals) then
|
||||
WriteZBSMethods(f, Globals.Functions)
|
||||
WriteZBSConstants(f, Globals.Constants)
|
||||
end
|
||||
|
||||
-- Finish the file:
|
||||
f:write("}\n")
|
||||
f:close()
|
||||
LOG("ZBS API dumped...")
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
local function DumpApi()
|
||||
LOG("Dumping the API...")
|
||||
|
||||
@ -1377,9 +1493,16 @@ local function DumpApi()
|
||||
Globals.Name = "Globals";
|
||||
table.insert(API, Globals);
|
||||
|
||||
-- Dump all available API object in HTML format into a subfolder:
|
||||
-- Read in the descriptions:
|
||||
LOG("Reading descriptions...");
|
||||
ReadDescriptions(API);
|
||||
|
||||
-- Dump all available API objects in HTML format into a subfolder:
|
||||
DumpAPIHtml(API);
|
||||
|
||||
-- Dump all available API objects in format used by ZeroBraneStudio API descriptions:
|
||||
DumpAPIZBS(API)
|
||||
|
||||
LOG("APIDump finished");
|
||||
return true
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user