Minetest-WorldEditAdditions/worldeditadditions_commands/doc/parse_reference.lua
2022-09-18 17:59:57 +01:00

44 lines
999 B
Lua

local wea_c = worldeditadditions_core
local function get_reference()
local lines = {}
for line in io.lines(wea_c.modpath.."/Chat-Command-Reference.md") do
table.insert(lines, line)
end
return lines
end
local function group_by_heading(lines, max_level)
local groups = {}
local acc = {}
for i,line in ipairs(lines) do
if wea_c.str_starts(line, "#") then
local _, _, heading, headingtext = line:find("(#+)%s*(.*)")
if #heading <= max_level then
table.insert(groups, {
level = #heading,
heading = headingtext,
text = table.concat(acc, "\n")
})
acc = {}
end
else
table.insert(acc, line)
end
end
return groups
end
local function parse_reference()
local lines = get_reference()
local headings = wea_c.table.filter(
group_by_heading(lines, 2),
function(item, i) return item.level ~= 2 end
)
for i,value in ipairs(headings) do
print(i, "level", value.level, "heading", value.heading, "text", value.text)
end
end
return parse_reference