TombEngine/Tools/Enum generation/generateEnum.lua

64 lines
1.3 KiB
Lua
Raw Permalink Normal View History

return function(enumName, enumIncludes, enumDesc, constantsDesc, tableDesc, decl, footer, enumFile, outputFile)
local enum = {}
local date = os.date("*t")
local dateStr = date.day .. "/" .. date.month .. "/" .. date.year
enum.header = [==[
#pragma once
// Last generated on ]==] .. dateStr .. [==[.
// Please do not manually modify.
]==] .. enumIncludes ..
"\n/***\n" .. enumDesc .. "\n@classmod " .. enumName .. [==[
@pragma nostrip
*/
]==]
local f = io.open(enumFile, "r")
local str = f:read()
enum.vals = {}
while (str) do
str:gsub("(%g*) (%g*)", function(one, two) enum.vals[#enum.vals+1] = {one, two} end)
str = f:read()
end
io.close(f)
local doc = [===[
/*** Constants.
]===] .. constantsDesc .. "\n\n"
local docFormat = "\t%s \n"
for i, v in ipairs(enum.vals) do
doc = doc .. string.format(docFormat, v[1])
end
doc = doc .. [===[
@section ]===] .. enumName .. [===[
*/
/*** ]===] .. tableDesc .. [===[
@table CONSTANT_STRING_HERE
*/
]===]
local format = "\t{\"%s\", %s},\n"
local oStr = ""
for i, v in ipairs(enum.vals) do
oStr = oStr .. string.format(format, v[1], v[2])
end
-- remove last newline and comma
oStr = oStr:sub(1, -3)
f = io.open(outputFile, "w")
f:write(enum.header, "\n", doc, "\n", decl, "\n",oStr, "\n", footer)
io.close(f)
print("written to " .. outputFile)
end