summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2016-08-19 14:39:37 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2016-08-19 14:39:37 +0100
commit4d701bca2e732fa508fc663f7d5a5ece058d254f (patch)
tree3603d51bda4bf82b8620ed56722a7684346ef642
parentfeafdb85a44793a37401a70eb117f74c91deca36 (diff)
downloadefl-4d701bca2e732fa508fc663f7d5a5ece058d254f.tar.gz
docs: generate reference pages for codelink
-rw-r--r--src/scripts/elua/apps/docgen/doctree.lua10
-rw-r--r--src/scripts/elua/apps/docgen/keyref.lua10
-rw-r--r--src/scripts/elua/apps/docgen/util.lua4
-rw-r--r--src/scripts/elua/apps/docgen/writer.lua9
-rw-r--r--src/scripts/elua/apps/gendoc.lua50
5 files changed, 51 insertions, 32 deletions
diff --git a/src/scripts/elua/apps/docgen/doctree.lua b/src/scripts/elua/apps/docgen/doctree.lua
index f10a8195fc..17bac7cec8 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -1008,7 +1008,7 @@ M.Typedecl = Node:clone {
error("unhandled typedecl type: " .. tpt)
end,
- serialize_c = function(self)
+ serialize_c = function(self, ns)
local tpt = self:type_get()
if tpt == self.UNKNOWN then
error("unknown typedecl: " .. self:full_name_get())
@@ -1016,7 +1016,7 @@ M.Typedecl = Node:clone {
tpt == self.STRUCT_OPAQUE then
local buf = { "typedef struct " }
local fulln = self:full_name_get():gsub("%.", "_");
- keyref.add(fulln, "c")
+ keyref.add(fulln, ns, "c")
buf[#buf + 1] = "_" .. fulln;
if tpt == self.STRUCT_OPAQUE then
buf[#buf + 1] = " " .. fulln .. ";"
@@ -1038,7 +1038,7 @@ M.Typedecl = Node:clone {
elseif tpt == self.ENUM then
local buf = { "typedef enum" }
local fulln = self:full_name_get():gsub("%.", "_");
- keyref.add(fulln, "c")
+ keyref.add(fulln, ns, "c")
local fields = self:enum_fields_get()
if #fields == 0 then
buf[#buf + 1] = " {} " .. fulln .. ";"
@@ -1049,7 +1049,7 @@ M.Typedecl = Node:clone {
buf[#buf + 1] = " "
local cn = fld:c_name_get()
buf[#buf + 1] = cn
- keyref.add(cn, "c")
+ keyref.add(cn, ns, "c")
local val = fld:value_get()
if val then
buf[#buf + 1] = " = "
@@ -1071,7 +1071,7 @@ M.Typedecl = Node:clone {
return table.concat(buf)
elseif tpt == self.ALIAS then
local fulln = self:full_name_get():gsub("%.", "_");
- keyref.add(fulln, "c")
+ keyref.add(fulln, ns, "c")
return "typedef "
.. M.type_cstr_get(self:base_type_get(), fulln) .. ";"
end
diff --git a/src/scripts/elua/apps/docgen/keyref.lua b/src/scripts/elua/apps/docgen/keyref.lua
index c25e215225..6a22ed0aa0 100644
--- a/src/scripts/elua/apps/docgen/keyref.lua
+++ b/src/scripts/elua/apps/docgen/keyref.lua
@@ -2,13 +2,13 @@ local M = {}
local key_refs = {}
-M.add = function(key, lang)
+M.add = function(key, link, lang)
local rfs = key_refs[lang]
if not rfs then
key_refs[lang] = {}
rfs = key_refs[lang]
end
- rfs[key] = true
+ rfs[key] = link
end
M.build = function()
@@ -19,6 +19,9 @@ M.build = function()
local arr = {}
for refn, v in pairs(rfs) do
arr[#arr + 1] = refn
+ local rf = writer.Writer({ "ref", lang, "key", refn })
+ v[#v + 1] = true
+ rf:write_include(rf.INCLUDE_PAGE, v)
end
table.sort(arr)
f:write_raw(table.concat(arr, "\n"))
@@ -26,7 +29,8 @@ M.build = function()
f:finish()
local lf = writer.Writer({ "ref", lang, "keyword-link" })
lf:write_raw("/", dutil.path_join(
- dutil.get_root(), "ref", lang, "key", "{FNAME}"
+ dutil.nspace_to_path(dutil.get_root_ns()),
+ "ref", lang, "key", "{FNAME}"
))
lf:write_nl()
lf:finish()
diff --git a/src/scripts/elua/apps/docgen/util.lua b/src/scripts/elua/apps/docgen/util.lua
index 1b2f9f2298..b23afbc254 100644
--- a/src/scripts/elua/apps/docgen/util.lua
+++ b/src/scripts/elua/apps/docgen/util.lua
@@ -26,7 +26,7 @@ M.make_page = function(path)
return M.path_join(doc_root, path .. ".txt")
end
-M.get_root = function()
+M.get_root_ns = function()
return root_ns
end
@@ -64,7 +64,7 @@ end
M.init = function(root, rns)
doc_root = root:gsub(rep_sep, path_sep)
- root_ns = rns:gsub(rep_sep, path_sep)
+ root_ns = rns
end
return M
diff --git a/src/scripts/elua/apps/docgen/writer.lua b/src/scripts/elua/apps/docgen/writer.lua
index de69667eec..0bfacb7fcf 100644
--- a/src/scripts/elua/apps/docgen/writer.lua
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -85,6 +85,15 @@ M.Writer = util.Object:clone {
[self.INCLUDE_NAMESPACE] = "namespace",
[self.INCLUDE_TAG] = "tagtopic"
}
+ if type(name) == "table" then
+ if name[#name] == true then
+ name[#name] = nil
+ name = ":" .. root_nspace .. ":"
+ .. table.concat(name, ":")
+ else
+ name = table.concat(name, ":")
+ end
+ end
self:write_raw("{{", it_to_tp[tp], ">", name);
if flags then
if tp == self.INCLUDE_SECTION and flags.section then
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index a0109af202..44aea0ba7b 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -31,12 +31,12 @@ local get_func_csig_part = function(cn, tp)
return dtree.type_cstr_get(tp, cn)
end
-local gen_func_csig = function(f, ftype)
+local gen_func_csig = function(f, ns, ftype)
ftype = ftype or f.METHOD
assert(ftype ~= f.PROPERTY)
local cn = f:full_c_name_get(ftype)
- keyref.add(cn, "c")
+ keyref.add(cn, ns, "c")
local rtype = f:return_type_get(ftype)
local fparam = "Eo *obj"
@@ -688,11 +688,12 @@ local build_igraph = function(cl)
end
local build_class = function(cl)
- local f = writer.Writer(cl:nspaces_get())
+ local cln = cl:nspaces_get()
+ local f = writer.Writer(cln)
stats.check_class(cl)
f:write_h(cl:full_name_get(), 2)
- keyref.add(cl:full_name_get():gsub("%.", "_"), "c")
+ keyref.add(cl:full_name_get():gsub("%.", "_"), cln, "c")
f:write_folded("Inheritance graph", function()
f:write_graph(build_igraph(cl))
@@ -743,7 +744,7 @@ local build_classes = function()
end
end
-local write_tsigs = function(f, tp)
+local write_tsigs = function(f, tp, ns)
f:write_h(tp:full_name_get(), 2)
f:write_h("Signature", 3)
@@ -751,15 +752,16 @@ local write_tsigs = function(f, tp)
f:write_nl()
f:write_h("C signature", 3)
- f:write_code(tp:serialize_c(), "c")
+ f:write_code(tp:serialize_c(ns), "c")
f:write_nl()
end
local build_alias = function(tp)
- local f = writer.Writer(dtree.Node.nspaces_get(tp, "alias"))
+ local ns = dtree.Node.nspaces_get(tp, "alias")
+ local f = writer.Writer(ns)
stats.check_alias(tp)
- write_tsigs(f, tp)
+ write_tsigs(f, tp, ns)
f:write_h("Description", 3)
f:write_raw(tp:doc_get():full_get(nil, true))
@@ -769,10 +771,11 @@ local build_alias = function(tp)
end
local build_struct = function(tp)
- local f = writer.Writer(dtree.Node.nspaces_get(tp, "struct"))
+ local ns = dtree.Node.nspaces_get(tp, "struct")
+ local f = writer.Writer(ns)
stats.check_struct(tp)
- write_tsigs(f, tp)
+ write_tsigs(f, tp, ns)
f:write_h("Description", 3)
f:write_raw(tp:doc_get():full_get(nil, true))
@@ -794,10 +797,11 @@ local build_struct = function(tp)
end
local build_enum = function(tp)
- local f = writer.Writer(dtree.Node.nspaces_get(tp, "enum"))
+ local ns = dtree.Node.nspaces_get(tp, "enum")
+ local f = writer.Writer(ns)
stats.check_enum(tp)
- write_tsigs(f, tp)
+ write_tsigs(f, tp, ns)
f:write_h("Description", 3)
f:write_raw(tp:doc_get():full_get(nil, true))
@@ -897,7 +901,8 @@ local build_vallist = function(f, pg, ps, title)
end
build_method = function(fn, cl)
- local f = writer.Writer(fn:nspaces_get(cl))
+ local mns = fn:nspaces_get(cl)
+ local f = writer.Writer(mns)
stats.check_method(fn, cl)
f:write_h(cl:full_name_get() .. "." .. fn:name_get(), 2)
@@ -907,7 +912,7 @@ build_method = function(fn, cl)
f:write_nl()
f:write_h("C signature", 3)
- f:write_code(gen_func_csig(fn), "c")
+ f:write_code(gen_func_csig(fn, mns), "c")
f:write_nl()
local pars = fn:parameters_get()
@@ -925,7 +930,8 @@ build_method = function(fn, cl)
end
build_property = function(fn, cl)
- local f = writer.Writer(fn:nspaces_get(cl))
+ local pns = fn:nspaces_get(cl)
+ local f = writer.Writer(pns)
local ft = fn:type_get()
local isget = (ft == fn.PROP_GET or ft == fn.PROPERTY)
@@ -947,10 +953,10 @@ build_property = function(fn, cl)
f:write_h("C signature", 3)
local codes = {}
if isget then
- codes[#codes + 1] = gen_func_csig(fn, fn.PROP_GET)
+ codes[#codes + 1] = gen_func_csig(fn, pns, fn.PROP_GET)
end
if isset then
- codes[#codes + 1] = gen_func_csig(fn, fn.PROP_SET)
+ codes[#codes + 1] = gen_func_csig(fn, pns, fn.PROP_SET)
end
f:write_code(table.concat(codes, "\n"), "c")
f:write_nl()
@@ -999,7 +1005,8 @@ build_property = function(fn, cl)
end
build_event = function(ev, cl)
- local f = writer.Writer(ev:nspaces_get(cl))
+ local evn = ev:nspaces_get(cl)
+ local f = writer.Writer(evn)
f:write_h(cl:full_name_get() .. ": " .. ev:name_get(), 2)
@@ -1034,7 +1041,7 @@ build_event = function(ev, cl)
f:write_h("C signature", 3)
local cn = ev:c_name_get()
- keyref.add(cn, "c")
+ keyref.add(cn, evn, "c")
f:write_code(dtree.type_cstr_get(etp, cn) .. ";", "c")
f:write_nl()
@@ -1085,9 +1092,8 @@ getopt.parse {
else
dr = opts["r"]
end
- local pns = dutil.nspace_to_path(rootns)
- dr = dutil.path_join(dr, pns)
- dutil.init(dr, pns)
+ dr = dutil.path_join(dr, dutil.nspace_to_path(rootns))
+ dutil.init(dr, rootns)
if #args == 0 then
dtree.scan_directory()
else