forked from enlightenment/efl
docgen: prepare for markup parsing and add support for notes
This commit is contained in:
parent
c8a25492c3
commit
891646261f
63
gendoc.lua
63
gendoc.lua
|
@ -120,7 +120,7 @@ local Writer = util.Object:clone {
|
||||||
|
|
||||||
write_code = function(self, str, lang)
|
write_code = function(self, str, lang)
|
||||||
lang = lang and (" " .. lang) or ""
|
lang = lang and (" " .. lang) or ""
|
||||||
self:write_raw("<code" .. lang .. ">\n", str, "\n</code>")
|
self:write_raw("<code" .. lang .. ">\n", str, "\n</code>\n")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
write_link = function(self, target, title)
|
write_link = function(self, target, title)
|
||||||
|
@ -185,6 +185,59 @@ local Buffer = Writer:clone {
|
||||||
|
|
||||||
-- eolian to various doc elements conversions
|
-- eolian to various doc elements conversions
|
||||||
|
|
||||||
|
local str_split = function(str, delim)
|
||||||
|
if not str then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local s, e = str:find(delim, 1, true)
|
||||||
|
if not s then
|
||||||
|
return { str }
|
||||||
|
end
|
||||||
|
local t = {}
|
||||||
|
while s do
|
||||||
|
t[#t + 1] = str:sub(1, s - 1)
|
||||||
|
str = str:sub(e + 1)
|
||||||
|
s, e = str:find(delim, 1, true)
|
||||||
|
if not s then
|
||||||
|
t[#t + 1] = str
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
local notetypes = {
|
||||||
|
["Note: "] = "<note>\n",
|
||||||
|
["Warning: "] = "<note warning>\n",
|
||||||
|
["Remark: "] = "<note tip>\n",
|
||||||
|
["TODO: "] = "<note>\n**TODO:** "
|
||||||
|
}
|
||||||
|
|
||||||
|
local gen_doc_par = function(str)
|
||||||
|
local tag
|
||||||
|
for k, v in pairs(notetypes) do
|
||||||
|
if str:match("^" .. k) then
|
||||||
|
tag = v
|
||||||
|
str = str:sub(#k + 1)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if tag then
|
||||||
|
return tag .. str .. "\n</note>"
|
||||||
|
end
|
||||||
|
return str
|
||||||
|
end
|
||||||
|
|
||||||
|
local gen_doc_refd = function(str)
|
||||||
|
if not str then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local pars = str_split(str, "\n\n")
|
||||||
|
for i = 1, #pars do
|
||||||
|
pars[i] = gen_doc_par(pars[i])
|
||||||
|
end
|
||||||
|
return table.concat(pars, "\n\n")
|
||||||
|
end
|
||||||
|
|
||||||
local get_fallback_fdoc = function(f, ftype)
|
local get_fallback_fdoc = function(f, ftype)
|
||||||
if not ftype then
|
if not ftype then
|
||||||
local ft = f:type_get()
|
local ft = f:type_get()
|
||||||
|
@ -206,7 +259,7 @@ local get_brief_doc = function(doc1, doc2)
|
||||||
if not doc1 then
|
if not doc1 then
|
||||||
doc1, doc2 = doc2, doc1
|
doc1, doc2 = doc2, doc1
|
||||||
end
|
end
|
||||||
return doc1:summary_get()
|
return gen_doc_refd(doc1:summary_get())
|
||||||
end
|
end
|
||||||
|
|
||||||
local get_brief_fdoc = function(f, ftype)
|
local get_brief_fdoc = function(f, ftype)
|
||||||
|
@ -234,9 +287,9 @@ local get_full_doc = function(doc1, doc2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not desc1 then
|
if not desc1 then
|
||||||
return sum1 .. edoc
|
return gen_doc_refd(sum1 .. edoc)
|
||||||
end
|
end
|
||||||
return sum1 .. "\n\n" .. desc1 .. edoc
|
return gen_doc_refd(sum1 .. "\n\n" .. desc1 .. edoc)
|
||||||
end
|
end
|
||||||
|
|
||||||
local get_full_fdoc = function(f, ftype)
|
local get_full_fdoc = function(f, ftype)
|
||||||
|
@ -553,6 +606,7 @@ build_method = function(fn, cl)
|
||||||
|
|
||||||
f:write_h("C signature", 3)
|
f:write_h("C signature", 3)
|
||||||
f:write_code(gen_func_csig(fn), "c")
|
f:write_code(gen_func_csig(fn), "c")
|
||||||
|
f:write_nl()
|
||||||
|
|
||||||
f:write_h("Description", 3)
|
f:write_h("Description", 3)
|
||||||
write_full_doc(f, fn:documentation_get(eolian.function_type.METHOD))
|
write_full_doc(f, fn:documentation_get(eolian.function_type.METHOD))
|
||||||
|
@ -585,6 +639,7 @@ build_property = function(fn, cl)
|
||||||
codes[#codes + 1] = gen_func_csig(fn, fts.PROP_SET)
|
codes[#codes + 1] = gen_func_csig(fn, fts.PROP_SET)
|
||||||
end
|
end
|
||||||
f:write_code(table.concat(codes, "\n"), "c")
|
f:write_code(table.concat(codes, "\n"), "c")
|
||||||
|
f:write_nl()
|
||||||
|
|
||||||
if isget and isset then
|
if isget and isset then
|
||||||
f:write_h("Description", 3)
|
f:write_h("Description", 3)
|
||||||
|
|
Loading…
Reference in New Issue