diff --git a/src/Makefile_Elua.am b/src/Makefile_Elua.am
index e62e7a8c81..26cbba225f 100644
--- a/src/Makefile_Elua.am
+++ b/src/Makefile_Elua.am
@@ -67,7 +67,9 @@ eluadocgendir = $(datadir)/elua/apps/docgen
eluadocgen_DATA = \
scripts/elua/apps/docgen/mappings.lua \
- scripts/elua/apps/docgen/stats.lua
+ scripts/elua/apps/docgen/stats.lua \
+ scripts/elua/apps/docgen/util.lua \
+ scripts/elua/apps/docgen/writer.lua
EXTRA_DIST2 += $(eluadocgen_DATA)
diff --git a/src/scripts/elua/apps/docgen/mappings.lua b/src/scripts/elua/apps/docgen/mappings.lua
index 10966f0f24..486f724951 100644
--- a/src/scripts/elua/apps/docgen/mappings.lua
+++ b/src/scripts/elua/apps/docgen/mappings.lua
@@ -156,4 +156,4 @@ M.gen_nsp_ref = function(str, root)
return ret
end
-return M
\ No newline at end of file
+return M
diff --git a/src/scripts/elua/apps/docgen/stats.lua b/src/scripts/elua/apps/docgen/stats.lua
index 4c9770aaa3..ca0efc2ba5 100644
--- a/src/scripts/elua/apps/docgen/stats.lua
+++ b/src/scripts/elua/apps/docgen/stats.lua
@@ -275,4 +275,4 @@ M.init = function(verbose)
is_verbose = verbose
end
-return M
\ No newline at end of file
+return M
diff --git a/src/scripts/elua/apps/docgen/util.lua b/src/scripts/elua/apps/docgen/util.lua
new file mode 100644
index 0000000000..95c3c504c7
--- /dev/null
+++ b/src/scripts/elua/apps/docgen/util.lua
@@ -0,0 +1,65 @@
+local cutil = require("cutil")
+local ffi = require("ffi")
+
+local M = {}
+
+local doc_root
+
+local path_sep, rep_sep = "/", "\\"
+if ffi.os == "Windows" then
+ path_sep, rep_sep = rep_sep, path_sep
+end
+
+M.path_join = function(...)
+ return table.concat({ ... }, path_sep):gsub(rep_sep, path_sep)
+end
+
+M.path_to_nspace = function(p)
+ return p:gsub(rep_sep, ":"):gsub(path_sep, ":"):lower()
+end
+
+M.nspace_to_path = function(ns)
+ return ns:gsub(":", path_sep):gsub(rep_sep, path_sep):lower()
+end
+
+M.make_page = function(path)
+ return M.path_join(doc_root, path .. ".txt")
+end
+
+M.mkdir_r = function(dirn)
+ assert(cutil.file_mkpath(dirn and M.path_join(doc_root, dirn) or doc_root))
+end
+
+M.mkdir_p = function(path)
+ M.mkdir_r(path:match("(.+)" .. path_sep .. "([^" .. path_sep .. "]+)"))
+end
+
+M.rm_root = function()
+ cutil.file_rmrf(doc_root)
+end
+
+M.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
+
+M.init = function(root)
+ doc_root = root:gsub(rep_sep, path_sep)
+end
+
+return M
diff --git a/src/scripts/elua/apps/docgen/writer.lua b/src/scripts/elua/apps/docgen/writer.lua
new file mode 100644
index 0000000000..3ba6e39a7c
--- /dev/null
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -0,0 +1,331 @@
+local util = require("util")
+
+local eomap = require("docgen.mappings")
+local dutil = require("docgen.util")
+
+local M = {}
+
+local root_nspace, use_notes
+
+M.Writer = util.Object:clone {
+ __ctor = function(self, path)
+ local subs
+ if type(path) == "table" then
+ subs = dutil.path_join(unpack(path))
+ else
+ subs = dutil.nspace_to_path(path)
+ end
+ dutil.mkdir_p(subs)
+ self.file = assert(io.open(dutil.make_page(subs), "w"))
+ end,
+
+ write_raw = function(self, ...)
+ self.file:write(...)
+ return self
+ end,
+
+ write_nl = function(self, n)
+ self:write_raw(("\n"):rep(n or 1))
+ return self
+ end,
+
+ write_h = function(self, heading, level, nonl)
+ local s = ("="):rep(7 - level)
+ self:write_raw(s, " ", heading, " ", s, "\n")
+ if not nonl then
+ self:write_nl()
+ end
+ return self
+ end,
+
+ write_fmt = function(self, fmt1, fmt2, ...)
+ self:write_raw(fmt1, ...)
+ self:write_raw(fmt2)
+ return self
+ end,
+
+ write_b = function(self, ...)
+ self:write_fmt("**", "**", ...)
+ return self
+ end,
+
+ write_i = function(self, ...)
+ self:write_fmt("//", "//", ...)
+ return self
+ end,
+
+ write_u = function(self, ...)
+ self:write_fmt("__", "__", ...)
+ return self
+ end,
+
+ write_s = function(self, ...)
+ self:write_fmt("", "", ...)
+ return self
+ end,
+
+ write_m = function(self, ...)
+ self:write_fmt("''", "''", ...)
+ return self
+ end,
+
+ write_sub = function(self, ...)
+ self:write_fmt("", "", ...)
+ return self
+ end,
+
+ write_sup = function(self, ...)
+ self:write_fmt("", "", ...)
+ return self
+ end,
+
+ write_br = function(self, nl)
+ self:write_raw("\\\\", nl and "\n" or " ")
+ return self
+ end,
+
+ write_pre_inline = function(self, ...)
+ self:write_fmt("%%", "%%", ...)
+ return self
+ end,
+
+ write_pre = function(self, ...)
+ self:write_fmt("\n", "\n", ...)
+ return self
+ end,
+
+ write_code = function(self, str, lang)
+ lang = lang and (" " .. lang) or ""
+ self:write_raw("\n", str, "\n
\n")
+ end,
+
+ write_link = function(self, target, title)
+ if type(target) == "table" then
+ if target[#target] == true then
+ target[#target] = nil
+ target = ":" .. root_nspace .. ":"
+ .. table.concat(target, ":")
+ else
+ target = table.concat(target, ":")
+ end
+ end
+ if not title then
+ self:write_raw("[[", target:lower(), "|", target, "]]")
+ return
+ end
+ target = target:lower()
+ if type(title) == "string" then
+ self:write_raw("[[", target, "|", title, "]]")
+ return self
+ end
+ self:write_raw("[[", target, "|")
+ title(self)
+ self:write_raw("]]")
+ return self
+ end,
+
+ write_graph = function(self, tbl)
+ self:write_raw("\n")
+ self:write_raw("digraph ", tbl.type, " {\n")
+
+ for k, v in pairs(tbl.attrs or {}) do
+ self:write_raw(" ", k, " = \"", v, "\"\n")
+ end
+
+ local write_node = function(nname, attrs)
+ self:write_raw(" ", nname, " [")
+ local first = true
+ for k, v in pairs(attrs) do
+ if not first then
+ self:write_raw(", ")
+ end
+ self:write_raw(k, " = \"", v, "\"")
+ first = false
+ end
+ self:write_raw("]\n")
+ end
+
+ if tbl.node then
+ self:write_nl()
+ write_node("node", tbl.node)
+ end
+ if tbl.edge then
+ if not tbl.node then self:write_nl() end
+ write_node("edge", tbl.edge)
+ end
+
+ self:write_nl()
+ for i, v in ipairs(tbl.nodes) do
+ local nname = v.name
+ v.name = nil
+ write_node(nname, v)
+ end
+
+ self:write_nl()
+ for i, v in ipairs(tbl.connections) do
+ local from, to, sep = v[1], v[2], (v[3] or "->")
+ if type(from) == "table" then
+ self:write_raw(" {", table.concat(from, ", "), "}")
+ else
+ self:write_raw(" ", from)
+ end
+ self:write_raw(" ", sep, " ")
+ if type(to) == "table" then
+ self:write_raw("{", table.concat(to, ", "), "}")
+ else
+ self:write_raw(to)
+ end
+ self:write_nl()
+ end
+
+ self:write_raw("}\n")
+ end,
+
+ write_table = function(self, titles, tbl)
+ self:write_raw("^ ", table.concat(titles, " ^ "), " ^\n")
+ for i, v in ipairs(tbl) do
+ self:write_raw("| ", table.concat(v, " | "), " |\n")
+ end
+ return self
+ end,
+
+ write_list = function(self, tbl, ord)
+ local prec = ord and "-" or "*"
+ for i, v in ipairs(tbl) do
+ local lvl, str = 1, v
+ if type(v) == "table" then
+ lvl, str = v[1] + 1, v[2]
+ end
+ local pbeg, pend = str:match("([^\n]+)\n(.+)")
+ if not pbeg then
+ pbeg = str
+ end
+ self:write_raw((" "):rep(lvl), prec, " ", str, "\n")
+ if pend then
+ self:write_raw(pend, "\n")
+ end
+ end
+ return self
+ end,
+
+ write_par_markup = function(self, str)
+ self:write_raw("%%")
+ local f = str:gmatch(".")
+ local c = f()
+ while c do
+ if c == "\\" then
+ c = f()
+ if c ~= "@" and c ~= "$" then
+ self:write_raw("\\")
+ end
+ self:write_raw(c)
+ c = f()
+ elseif c == "$" then
+ c = f()
+ if c and c:match("[a-zA-Z_]") then
+ local wbuf = { c }
+ c = f()
+ while c and c:match("[a-zA-Z0-9_]") do
+ wbuf[#wbuf + 1] = c
+ c = f()
+ end
+ self:write_raw("%%''" .. table.concat(wbuf) .. "''%%")
+ else
+ self:write_raw("$")
+ end
+ elseif c == "@" then
+ c = f()
+ if c and c:match("[a-zA-Z_]") then
+ local rbuf = { c }
+ c = f()
+ while c and c:match("[a-zA-Z0-9_.]") do
+ rbuf[#rbuf + 1] = c
+ c = f()
+ end
+ local ldot = false
+ if rbuf[#rbuf] == "." then
+ ldot = true
+ rbuf[#rbuf] = nil
+ end
+ local title = table.concat(rbuf)
+ self:write_raw("%%")
+ self:write_link(eomap.gen_nsp_ref(title, true), title)
+ self:write_raw("%%")
+ if ldot then
+ self:write_raw(".")
+ end
+ else
+ self:write_raw("@")
+ end
+ elseif c == "%" then
+ c = f()
+ if c == "%" then
+ c = f()
+ self:write_raw("%%%%%%")
+ else
+ self:write_raw("%")
+ end
+ else
+ self:write_raw(c)
+ c = f()
+ end
+ end
+ self:write_raw("%%")
+ return self
+ end,
+
+ write_par = function(self, str)
+ local notetypes = use_notes and {
+ ["Note: "] = "\n",
+ ["Warning: "] = "\n",
+ ["Remark: "] = "\n",
+ ["TODO: "] = "\n**TODO:** "
+ } or {}
+ 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
+ self:write_raw(tag)
+ self:write_par_markup(str)
+ self:write_raw("\n")
+ else
+ self:write_par_markup(str)
+ end
+ return self
+ end,
+
+ finish = function(self)
+ self.file:close()
+ end
+}
+
+M.Buffer = M.Writer:clone {
+ __ctor = function(self)
+ self.buf = {}
+ end,
+
+ write_raw = function(self, ...)
+ for i, v in ipairs({ ... }) do
+ self.buf[#self.buf + 1] = v
+ end
+ return self
+ end,
+
+ finish = function(self)
+ self.result = table.concat(self.buf)
+ self.buf = {}
+ return self.result
+ end
+}
+
+M.init = function(root_ns, notes)
+ root_nspace = root_ns
+ use_notes = notes
+end
+
+return M
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index 75fa9e82fe..b8caa7a9ea 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -1,383 +1,12 @@
local eolian = require("eolian")
local getopt = require("getopt")
-local cutil = require("cutil")
-local util = require("util")
-local ffi = require("ffi")
local eomap = require("docgen.mappings")
local stats = require("docgen.stats")
+local dutil = require("docgen.util")
+local writer = require("docgen.writer")
-local global_opts = {}
-
--- utils
-
-local path_sep, rep_sep = "/", "\\"
-if ffi.os == "Windows" then
- path_sep, rep_sep = rep_sep, path_sep
-end
-
-local path_join = function(...)
- return table.concat({ ... }, path_sep):gsub(rep_sep, path_sep)
-end
-
-local path_to_nspace = function(p)
- return p:gsub(rep_sep, ":"):gsub(path_sep, ":"):lower()
-end
-
-local nspace_to_path = function(ns)
- return ns:gsub(":", path_sep):gsub(rep_sep, path_sep):lower()
-end
-
-local make_page = function(path)
- return path_join(global_opts.doc_root, path .. ".txt")
-end
-
-local mkdir_r = function(dirn)
- local dr = global_opts.doc_root
- assert(cutil.file_mkpath(dirn and path_join(dr, dirn) or dr))
-end
-
-local mkdir_p = function(path)
- mkdir_r(path:match("(.+)" .. path_sep .. "([^" .. path_sep .. "]+)"))
-end
-
-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
-
--- generator
-
-local Writer = util.Object:clone {
- __ctor = function(self, path)
- local subs
- if type(path) == "table" then
- subs = path_join(unpack(path))
- else
- subs = nspace_to_path(path)
- end
- mkdir_p(subs)
- self.file = assert(io.open(make_page(subs), "w"))
- end,
-
- write_raw = function(self, ...)
- self.file:write(...)
- return self
- end,
-
- write_nl = function(self, n)
- self:write_raw(("\n"):rep(n or 1))
- return self
- end,
-
- write_h = function(self, heading, level, nonl)
- local s = ("="):rep(7 - level)
- self:write_raw(s, " ", heading, " ", s, "\n")
- if not nonl then
- self:write_nl()
- end
- return self
- end,
-
- write_fmt = function(self, fmt1, fmt2, ...)
- self:write_raw(fmt1, ...)
- self:write_raw(fmt2)
- return self
- end,
-
- write_b = function(self, ...)
- self:write_fmt("**", "**", ...)
- return self
- end,
-
- write_i = function(self, ...)
- self:write_fmt("//", "//", ...)
- return self
- end,
-
- write_u = function(self, ...)
- self:write_fmt("__", "__", ...)
- return self
- end,
-
- write_s = function(self, ...)
- self:write_fmt("", "", ...)
- return self
- end,
-
- write_m = function(self, ...)
- self:write_fmt("''", "''", ...)
- return self
- end,
-
- write_sub = function(self, ...)
- self:write_fmt("", "", ...)
- return self
- end,
-
- write_sup = function(self, ...)
- self:write_fmt("", "", ...)
- return self
- end,
-
- write_br = function(self, nl)
- self:write_raw("\\\\", nl and "\n" or " ")
- return self
- end,
-
- write_pre_inline = function(self, ...)
- self:write_fmt("%%", "%%", ...)
- return self
- end,
-
- write_pre = function(self, ...)
- self:write_fmt("\n", "\n", ...)
- return self
- end,
-
- write_code = function(self, str, lang)
- lang = lang and (" " .. lang) or ""
- self:write_raw("\n", str, "\n
\n")
- end,
-
- write_link = function(self, target, title)
- if type(target) == "table" then
- if target[#target] == true then
- target[#target] = nil
- target = ":" .. global_opts.root_nspace .. ":"
- .. table.concat(target, ":")
- else
- target = table.concat(target, ":")
- end
- end
- if not title then
- self:write_raw("[[", target:lower(), "|", target, "]]")
- return
- end
- target = target:lower()
- if type(title) == "string" then
- self:write_raw("[[", target, "|", title, "]]")
- return self
- end
- self:write_raw("[[", target, "|")
- title(self)
- self:write_raw("]]")
- return self
- end,
-
- write_graph = function(self, tbl)
- self:write_raw("\n")
- self:write_raw("digraph ", tbl.type, " {\n")
-
- for k, v in pairs(tbl.attrs or {}) do
- self:write_raw(" ", k, " = \"", v, "\"\n")
- end
-
- local write_node = function(nname, attrs)
- self:write_raw(" ", nname, " [")
- local first = true
- for k, v in pairs(attrs) do
- if not first then
- self:write_raw(", ")
- end
- self:write_raw(k, " = \"", v, "\"")
- first = false
- end
- self:write_raw("]\n")
- end
-
- if tbl.node then
- self:write_nl()
- write_node("node", tbl.node)
- end
- if tbl.edge then
- if not tbl.node then self:write_nl() end
- write_node("edge", tbl.edge)
- end
-
- self:write_nl()
- for i, v in ipairs(tbl.nodes) do
- local nname = v.name
- v.name = nil
- write_node(nname, v)
- end
-
- self:write_nl()
- for i, v in ipairs(tbl.connections) do
- local from, to, sep = v[1], v[2], (v[3] or "->")
- if type(from) == "table" then
- self:write_raw(" {", table.concat(from, ", "), "}")
- else
- self:write_raw(" ", from)
- end
- self:write_raw(" ", sep, " ")
- if type(to) == "table" then
- self:write_raw("{", table.concat(to, ", "), "}")
- else
- self:write_raw(to)
- end
- self:write_nl()
- end
-
- self:write_raw("}\n")
- end,
-
- write_table = function(self, titles, tbl)
- self:write_raw("^ ", table.concat(titles, " ^ "), " ^\n")
- for i, v in ipairs(tbl) do
- self:write_raw("| ", table.concat(v, " | "), " |\n")
- end
- return self
- end,
-
- write_list = function(self, tbl, ord)
- local prec = ord and "-" or "*"
- for i, v in ipairs(tbl) do
- local lvl, str = 1, v
- if type(v) == "table" then
- lvl, str = v[1] + 1, v[2]
- end
- local pbeg, pend = str:match("([^\n]+)\n(.+)")
- if not pbeg then
- pbeg = str
- end
- self:write_raw((" "):rep(lvl), prec, " ", str, "\n")
- if pend then
- self:write_raw(pend, "\n")
- end
- end
- return self
- end,
-
- write_par_markup = function(self, str)
- self:write_raw("%%")
- local f = str:gmatch(".")
- local c = f()
- while c do
- if c == "\\" then
- c = f()
- if c ~= "@" and c ~= "$" then
- self:write_raw("\\")
- end
- self:write_raw(c)
- c = f()
- elseif c == "$" then
- c = f()
- if c and c:match("[a-zA-Z_]") then
- local wbuf = { c }
- c = f()
- while c and c:match("[a-zA-Z0-9_]") do
- wbuf[#wbuf + 1] = c
- c = f()
- end
- self:write_raw("%%''" .. table.concat(wbuf) .. "''%%")
- else
- self:write_raw("$")
- end
- elseif c == "@" then
- c = f()
- if c and c:match("[a-zA-Z_]") then
- local rbuf = { c }
- c = f()
- while c and c:match("[a-zA-Z0-9_.]") do
- rbuf[#rbuf + 1] = c
- c = f()
- end
- local ldot = false
- if rbuf[#rbuf] == "." then
- ldot = true
- rbuf[#rbuf] = nil
- end
- local title = table.concat(rbuf)
- self:write_raw("%%")
- self:write_link(eomap.gen_nsp_ref(title, true), title)
- self:write_raw("%%")
- if ldot then
- self:write_raw(".")
- end
- else
- self:write_raw("@")
- end
- elseif c == "%" then
- c = f()
- if c == "%" then
- c = f()
- self:write_raw("%%%%%%")
- else
- self:write_raw("%")
- end
- else
- self:write_raw(c)
- c = f()
- end
- end
- self:write_raw("%%")
- return self
- end,
-
- write_par = function(self, str)
- local notetypes = global_opts.use_notes and {
- ["Note: "] = "\n",
- ["Warning: "] = "\n",
- ["Remark: "] = "\n",
- ["TODO: "] = "\n**TODO:** "
- } or {}
- 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
- self:write_raw(tag)
- self:write_par_markup(str)
- self:write_raw("\n")
- else
- self:write_par_markup(str)
- end
- return self
- end,
-
- finish = function(self)
- self.file:close()
- end
-}
-
-local Buffer = Writer:clone {
- __ctor = function(self)
- self.buf = {}
- end,
-
- write_raw = function(self, ...)
- for i, v in ipairs({ ... }) do
- self.buf[#self.buf + 1] = v
- end
- return self
- end,
-
- finish = function(self)
- self.result = table.concat(self.buf)
- self.buf = {}
- return self.result
- end
-}
+local use_dot
-- keyword reference
@@ -394,7 +23,7 @@ end
local build_reflist = function()
for lang, rfs in pairs(key_refs) do
- local f = Writer({ "ref", lang, "keyword-list" })
+ local f = writer.Writer({ "ref", lang, "keyword-list" })
local arr = {}
for refn, v in pairs(rfs) do
arr[#arr + 1] = refn
@@ -625,9 +254,9 @@ local gen_doc_refd = function(str)
if not str then
return nil
end
- local pars = str_split(str, "\n\n")
+ local pars = dutil.str_split(str, "\n\n")
for i = 1, #pars do
- pars[i] = Buffer():write_par(pars[i]):finish()
+ pars[i] = writer.Buffer():write_par(pars[i]):finish()
end
return table.concat(pars, "\n\n")
end
@@ -1000,7 +629,7 @@ local build_reftable = function(f, title, ctitle, ctype, t)
local nt = {}
for i, v in ipairs(t) do
nt[#nt + 1] = {
- Buffer():write_link(eomap.gen_nsp_eo(v, ctype, true),
+ writer.Buffer():write_link(eomap.gen_nsp_eo(v, ctype, true),
v:full_name_get()):finish(),
get_brief_doc(v:documentation_get())
}
@@ -1018,7 +647,7 @@ local build_functable = function(f, title, ctitle, cl, tp)
f:write_h(title, 3)
local nt = {}
for i, v in ipairs(t) do
- local lbuf = Buffer()
+ local lbuf = writer.Buffer()
lbuf:write_link(eomap.gen_nsp_func(v, cl, true), v:name_get())
local pt = propt_to_type[v:type_get()]
if pt then
@@ -1040,7 +669,7 @@ local build_functable = function(f, title, ctitle, cl, tp)
end
local build_ref = function()
- local f = Writer("reference")
+ local f = writer.Writer("reference")
f:write_h("EFL Reference", 2)
local classes = {}
@@ -1108,7 +737,7 @@ local build_inherits
build_inherits = function(cl, t, lvl)
t = t or {}
lvl = lvl or 0
- local lbuf = Buffer()
+ local lbuf = writer.Buffer()
lbuf:write_link(eomap.gen_nsp_class(cl, true), cl:full_name_get())
lbuf:write_raw(" ")
lbuf:write_i("(" .. eomap.classt_to_str[cl:type_get()] .. ")")
@@ -1193,7 +822,7 @@ local build_igraph = function(cl)
end
local build_class = function(cl)
- local f = Writer(eomap.gen_nsp_class(cl))
+ local f = writer.Writer(eomap.gen_nsp_class(cl))
stats.check_class(cl)
f:write_h(cl:full_name_get(), 2)
@@ -1202,7 +831,7 @@ local build_class = function(cl)
f:write_h("Inheritance hierarchy", 3)
f:write_list(build_inherits(cl))
f:write_nl()
- if global_opts.use_dot then
+ if use_dot then
f:write_graph(build_igraph(cl))
f:write_nl(2)
end
@@ -1222,7 +851,7 @@ local build_class = function(cl)
else
local nt = {}
for i, ev in ipairs(evs) do
- local lbuf = Buffer()
+ local lbuf = writer.Buffer()
lbuf:write_link(eomap.gen_nsp_ev(ev, cl, true), ev:name_get())
nt[#nt + 1] = {
lbuf:finish(), get_brief_doc(ev:documentation_get())
@@ -1259,7 +888,7 @@ local write_tsigs = function(f, tp)
end
local build_alias = function(tp)
- local f = Writer(eomap.gen_nsp_eo(tp, "alias"))
+ local f = writer.Writer(eomap.gen_nsp_eo(tp, "alias"))
stats.check_alias(tp)
write_tsigs(f, tp)
@@ -1272,7 +901,7 @@ local build_alias = function(tp)
end
local build_struct = function(tp)
- local f = Writer(eomap.gen_nsp_eo(tp, "struct"))
+ local f = writer.Writer(eomap.gen_nsp_eo(tp, "struct"))
stats.check_struct(tp)
write_tsigs(f, tp)
@@ -1285,7 +914,7 @@ local build_struct = function(tp)
local arr = {}
for fl in tp:struct_fields_get() do
- local buf = Buffer()
+ local buf = writer.Buffer()
buf:write_b(fl:name_get())
buf:write_raw(" - ", get_full_doc(fl:documentation_get()))
arr[#arr + 1] = buf:finish()
@@ -1297,7 +926,7 @@ local build_struct = function(tp)
end
local build_enum = function(tp)
- local f = Writer(eomap.gen_nsp_eo(tp, "enum"))
+ local f = writer.Writer(eomap.gen_nsp_eo(tp, "enum"))
stats.check_enum(tp)
write_tsigs(f, tp)
@@ -1310,7 +939,7 @@ local build_enum = function(tp)
local arr = {}
for fl in tp:enum_fields_get() do
- local buf = Buffer()
+ local buf = writer.Buffer()
buf:write_b(fl:name_get())
buf:write_raw(" - ", get_full_doc(fl:documentation_get()))
arr[#arr + 1] = buf:finish()
@@ -1322,7 +951,7 @@ local build_enum = function(tp)
end
local build_variable = function(v, constant)
- local f = Writer(eomap.gen_nsp_eo(v, constant and "constant" or "global"))
+ local f = writer.Writer(eomap.gen_nsp_eo(v, constant and "constant" or "global"))
if constant then
stats.check_constant(v)
else
@@ -1359,7 +988,7 @@ end
local build_parlist = function(f, pl, nodir)
local params = {}
for i, p in ipairs(pl) do
- local buf = Buffer()
+ local buf = writer.Buffer()
buf:write_b(p:name_get())
if not nodir then
buf:write_raw(" ")
@@ -1400,7 +1029,7 @@ local build_vallist = function(f, pg, ps, title)
end
build_method = function(fn, cl)
- local f = Writer(eomap.gen_nsp_func(fn, cl))
+ local f = writer.Writer(eomap.gen_nsp_func(fn, cl))
stats.check_method(fn, cl)
f:write_h(cl:full_name_get() .. "." .. fn:name_get(), 2)
@@ -1428,7 +1057,7 @@ build_method = function(fn, cl)
end
build_property = function(fn, cl)
- local f = Writer(eomap.gen_nsp_func(fn, cl))
+ local f = writer.Writer(eomap.gen_nsp_func(fn, cl))
local fts = eolian.function_type
local ft = fn:type_get()
@@ -1503,7 +1132,7 @@ build_property = function(fn, cl)
end
build_event = function(ev, cl)
- local f = Writer(eomap.gen_nsp_ev(ev, cl))
+ local f = writer.Writer(eomap.gen_nsp_ev(ev, cl))
f:write_h(cl:full_name_get() .. ": " .. ev:name_get(), 2)
@@ -1572,16 +1201,17 @@ getopt.parse {
if opts["h"] then
return
end
- global_opts.verbose = not not opts["v"]
- global_opts.use_dot = not opts["disable-graphviz"]
- global_opts.use_notes = not opts["disable-notes"]
- global_opts.root_nspace = (not opts["n"] or opts["n"] == "")
+ use_dot = not opts["disable-graphviz"]
+ local rootns = (not opts["n"] or opts["n"] == "")
and "efl" or opts["n"]
+ local dr
if not opts["r"] or opts["r"] == "" then
- opts["r"] = "dokuwiki/data/pages"
+ dr = "dokuwiki/data/pages"
+ else
+ dr = opts["r"]
end
- global_opts.doc_root = path_join(opts["r"],
- nspace_to_path(global_opts.root_nspace))
+ dr = dutil.path_join(dr, dutil.nspace_to_path(rootns))
+ dutil.init(dr)
if #args == 0 then
if not eolian.system_directory_scan() then
error("failed scanning system directory")
@@ -1599,9 +1229,10 @@ getopt.parse {
if not eolian.all_eo_files_parse() then
error("failed parsing eo files")
end
- stats.init(global_opts.verbose)
- cutil.file_rmrf(path_join(global_opts.doc_root))
- mkdir_r(nil)
+ stats.init(not not opts["v"])
+ writer.init(rootns, not opts["disable-notes"])
+ dutil.rm_root()
+ dutil.mkdir_r(nil)
build_ref()
build_classes()
build_typedecls()
@@ -1611,4 +1242,4 @@ getopt.parse {
end
}
-return true
\ No newline at end of file
+return true