aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/docgen.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/docgen.lua')
-rwxr-xr-xscripts/docgen.lua37
1 files changed, 33 insertions, 4 deletions
diff --git a/scripts/docgen.lua b/scripts/docgen.lua
index af308363..28213cef 100755
--- a/scripts/docgen.lua
+++ b/scripts/docgen.lua
@@ -87,8 +87,32 @@ Default config:
---
]]
+--- Converts markdown "```" codeblock to vimdoc format.
+local function codeblock_to_vimdoc(doc)
+ local function make_fn(before, extra)
+ return function(lang, code)
+ if not code then
+ code = lang
+ lang = ''
+ end
+ -- Indent code by 2 spaces.
+ return before .. '>' .. lang .. extra .. code:gsub('[^\n]+', ' %0')
+ end
+ end
+
+ doc = doc
+ -- "```lang" following a nonblank line.
+ :gsub('[^%s]\n```(%w+)\n(.-)\n```', make_fn(' ', '\n'))
+ -- "```lang" following a blank line.
+ :gsub('\n```(%w+)\n(.-)\n```', make_fn('', '\n'))
+ -- "```" (no language)
+ :gsub('\n```\n(..-)\n```', make_fn('', '\n'))
+
+ return doc
+end
+
--- Gets docstring by looking for "@brief" in a Lua code docstring.
-local function extract_brief(text)
+local function extract_brief(text, is_markdown)
local doc = text:match('%-%-+ *%@brief.-(\n%-%-.*)')