Skip to content

Commit

Permalink
feat(docs): added toc generator
Browse files Browse the repository at this point in the history
  • Loading branch information
folke committed Dec 15, 2022
1 parent 46d0cdb commit f4720ee
Showing 1 changed file with 27 additions and 2 deletions.
29 changes: 27 additions & 2 deletions lua/lazy/docs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,26 @@ function M.indent(str, indent)
return table.concat(lines, "\n")
end

function M.toc(md)
local toc = {}
local lines = vim.split(md, "\n")
local toc_found = false
for _, line in ipairs(lines) do
local hash, title = line:match("^(#+)%s*(.*)")
if hash then
if toc_found then
local anchor = string.gsub(title:lower(), "[^\32-\126]", "")
anchor = string.gsub(anchor, " ", "-")
toc[#toc + 1] = string.rep(" ", #hash - 1) .. "- [" .. title .. "](#" .. anchor .. ")"
end
if title:find("Table of Contents") then
toc_found = true
end
end
end
return M.fix_indent(table.concat(toc, "\n"))
end

---@param str string
function M.fix_indent(str)
local lines = vim.split(str, "\n")
Expand All @@ -33,15 +53,20 @@ end
---@param contents table<string, string>
function M.save(contents)
local readme = M.read("README.md")
contents.toc = M.toc(readme)
for tag, content in pairs(contents) do
content = M.fix_indent(content)
content = content:gsub("%%", "%%%%")
content = vim.trim(content)
local pattern = "(<%!%-%- " .. tag .. "_start %-%->).*(<%!%-%- " .. tag .. "_end %-%->)"
local pattern = "(<%!%-%- " .. tag .. ":start %-%->).*(<%!%-%- " .. tag .. ":end %-%->)"
if not readme:find(pattern) then
error("tag " .. tag .. " not found")
end
readme = readme:gsub(pattern, "%1\n\n```lua\n" .. content .. "\n```\n\n%2")
if tag == "toc" then
readme = readme:gsub(pattern, "%1\n\n" .. content .. "\n\n%2")
else
readme = readme:gsub(pattern, "%1\n\n```lua\n" .. content .. "\n```\n\n%2")
end
end

local fd = assert(io.open("README.md", "w+"))
Expand Down

0 comments on commit f4720ee

Please sign in to comment.