diff options
Diffstat (limited to 'scripts/docgen.lua')
| -rwxr-xr-x | scripts/docgen.lua | 37 |
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%-%-.*)') |
