q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4405d1fc7e4989faac8d90650ee9d79d87cf5ead
commit 4405d1fc7e4989faac8d90650ee9d79d87cf5ead Author: Daniel Kolesa <[email protected]> Date: Thu Feb 23 18:17:22 2017 +0100 docgen: initial support for inherited events listing --- src/scripts/elua/apps/gendoc.lua | 56 ++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua index 7b0b3f4..508b325 100644 --- a/src/scripts/elua/apps/gendoc.lua +++ b/src/scripts/elua/apps/gendoc.lua @@ -795,7 +795,7 @@ end -- finds all stuff that is callable on a class, respecting -- overrides and not duplicating, does a depth-first search local find_callables -find_callables = function(cl, omeths, written) +find_callables = function(cl, omeths, events, written) for i, inh in ipairs(cl:inherits_get()) do local pcl = dtree.Class.by_name_get(inh) for j, impl in ipairs(pcl:implements_get()) do @@ -806,8 +806,38 @@ find_callables = function(cl, omeths, written) written[fid] = true end end - find_callables(pcl, omeths, written) + for i, ev in ipairs(pcl:events_get()) do + events[#events + 1] = { pcl, ev } + end + find_callables(pcl, omeths, events, written) + end +end + +local build_evtable = function(f, title, cl, tbl) + if #tbl == 0 then + return + end + f:write_h(title, 2) + local nt = {} + local oclass = not cl + for i, ev in ipairs(tbl) do + local lbuf = writer.Buffer() + local evn + if oclass then + cl = ev[1] + ev = ev[2] + evn = cl:full_name_get() .. "." .. ev:name_get() + else + evn = ev:name_get() + end + lbuf:write_link(ev:nspaces_get(cl, true), evn) + nt[#nt + 1] = { + lbuf:finish(), ev:doc_get():brief_get() + } + build_event(ev, cl) end + table.sort(nt, function(v1, v2) return v1[1] < v2[1] end) + f:write_table({ "Event name", "Brief description" }, nt) end local build_class = function(cl) @@ -838,6 +868,7 @@ local build_class = function(cl) f:write_nl() local written = {} + local ievs = {} local meths, methos, omeths = {}, {}, {} for i, impl in ipairs(cl:implements_get()) do local func = impl:function_get() @@ -848,29 +879,14 @@ local build_class = function(cl) meths[#meths + 1] = impl end end - find_callables(cl, omeths, written) + find_callables(cl, omeths, ievs, written) build_functable(f, "Members", cl, meths) build_functable(f, "Overrides", cl, methos) build_functable(f, "Others", nil, omeths) - f:write_h("Events", 2) - local evs = cl:events_get() - if #evs == 0 then - f:write_raw("This class does not define any events.\n") - else - local nt = {} - for i, ev in ipairs(evs) do - local lbuf = writer.Buffer() - lbuf:write_link(ev:nspaces_get(cl, true), ev:name_get()) - nt[#nt + 1] = { - lbuf:finish(), ev:doc_get():brief_get() - } - build_event(ev, cl) - end - table.sort(nt, function(v1, v2) return v1[1] < v2[1] end) - f:write_table({ "Event name", "Brief description" }, nt) - end + build_evtable(f, "Events", cl, cl:events_get()) + build_evtable(f, "Inherited Events", nil, ievs) f:finish() end --
