summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2017-10-20 14:29:04 +0200
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2017-10-20 14:29:04 +0200
commitc48cde4aedfae253a14163f28477c131afc9be43 (patch)
tree121b30539894a5824983c71d3d93ec77acc15c02
parentdbf48bf9f572908d39ca30c0f3975926ab1efeb8 (diff)
downloadefl-c48cde4aedfae253a14163f28477c131afc9be43.tar.gz
docs: move write_include out of the writer backend
This is a large chunk shared between backends.
-rw-r--r--src/scripts/elua/apps/docgen/util.lua4
-rw-r--r--src/scripts/elua/apps/docgen/writer.lua150
2 files changed, 78 insertions, 76 deletions
diff --git a/src/scripts/elua/apps/docgen/util.lua b/src/scripts/elua/apps/docgen/util.lua
index 7e14a37b6d..48e375da95 100644
--- a/src/scripts/elua/apps/docgen/util.lua
+++ b/src/scripts/elua/apps/docgen/util.lua
@@ -22,8 +22,8 @@ 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, "auto", path .. ".txt")
+M.make_page = function(path, ext)
+ return M.path_join(doc_root, "auto", path .. "." .. ext)
end
M.get_root_ns = function()
diff --git a/src/scripts/elua/apps/docgen/writer.lua b/src/scripts/elua/apps/docgen/writer.lua
index 6dc47c1e39..67b6765596 100644
--- a/src/scripts/elua/apps/docgen/writer.lua
+++ b/src/scripts/elua/apps/docgen/writer.lua
@@ -63,6 +63,79 @@ local Buffer = {
end
}
+local write_include = function(self, tp, name, flags)
+ local it_to_tp = {
+ [self.INCLUDE_PAGE] = "page",
+ [self.INCLUDE_SECTION] = "section",
+ [self.INCLUDE_NAMESPACE] = "namespace",
+ [self.INCLUDE_TAG] = "tagtopic"
+ }
+ if type(name) == "table" then
+ if name[#name] == true then
+ name[#name] = nil
+ name = ":" .. root_nspace .. ":auto:"
+ .. table.concat(name, ":")
+ elseif name[#name] == false then
+ name[#name] = nil
+ name = ":" .. root_nspace .. ":user:"
+ .. 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
+ self:write_raw("#", flags.section)
+ end
+ flags.section = nil
+ local flstr = {}
+ for k, v in pairs(flags) do
+ local allow = allowed_incflags[k]
+ if allow ~= nil then
+ if type(allow) == "boolean" then
+ flstr[#flstr + 1] = k
+ elseif type(allow) == "number" or type(allow) == "string" then
+ if type(v) ~= type(allow) then
+ error("invalid value type for flag " .. k)
+ end
+ flstr[#flstr + 1] = k .. "=" .. v
+ elseif type(allow) == "table" then
+ if type(allow[1]) == "table" then
+ local valid = false
+ for i, vv in ipairs(allow[1]) do
+ if v == vv then
+ flstr[#flstr + 1] = k .. "=" .. v
+ valid = true
+ break
+ end
+ end
+ if not valid then
+ error("invalid value " .. v .. " for flag " .. k)
+ end
+ elseif type(allow[1]) == "string" and
+ type(allow[2]) == "string" then
+ if v then
+ flstr[#flstr + 1] = allow[1]
+ else
+ flstr[#flstr + 1] = allow[2]
+ end
+ end
+ end
+ else
+ error("invalid include flag: " .. tostring(k))
+ end
+ end
+ flstr = table.concat(flstr, "&")
+ if #flstr > 0 then
+ self:write_raw("&", flstr)
+ end
+ end
+ self:write_raw("}}")
+ self:write_nl()
+ return self
+end
+
M.set_backend = function(bend)
M.Writer = assert(writers[bend], "invalid generation backend")
M.Buffer = M.Writer:clone(Buffer)
@@ -82,7 +155,7 @@ writers["dokuwiki"] = util.Object:clone {
subs = dutil.nspace_to_path(path)
end
dutil.mkdir_p(subs)
- self.file = assert(io.open(dutil.make_page(subs), "w"))
+ self.file = assert(io.open(dutil.make_page(subs, "txt"), "w"))
if title then
if M.has_feature("title") then
self:write_raw("<title>", title, "</title>")
@@ -112,79 +185,8 @@ writers["dokuwiki"] = util.Object:clone {
return self
end,
- write_include = function(self, tp, name, flags, nonl)
- local it_to_tp = {
- [self.INCLUDE_PAGE] = "page",
- [self.INCLUDE_SECTION] = "section",
- [self.INCLUDE_NAMESPACE] = "namespace",
- [self.INCLUDE_TAG] = "tagtopic"
- }
- if type(name) == "table" then
- if name[#name] == true then
- name[#name] = nil
- name = ":" .. root_nspace .. ":auto:"
- .. table.concat(name, ":")
- elseif name[#name] == false then
- name[#name] = nil
- name = ":" .. root_nspace .. ":user:"
- .. 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
- self:write_raw("#", flags.section)
- end
- flags.section = nil
- local flstr = {}
- for k, v in pairs(flags) do
- local allow = allowed_incflags[k]
- if allow ~= nil then
- if type(allow) == "boolean" then
- flstr[#flstr + 1] = k
- elseif type(allow) == "number" or type(allow) == "string" then
- if type(v) ~= type(allow) then
- error("invalid value type for flag " .. k)
- end
- flstr[#flstr + 1] = k .. "=" .. v
- elseif type(allow) == "table" then
- if type(allow[1]) == "table" then
- local valid = false
- for i, vv in ipairs(allow[1]) do
- if v == vv then
- flstr[#flstr + 1] = k .. "=" .. v
- valid = true
- break
- end
- end
- if not valid then
- error("invalid value " .. v .. " for flag " .. k)
- end
- elseif type(allow[1]) == "string" and
- type(allow[2]) == "string" then
- if v then
- flstr[#flstr + 1] = allow[1]
- else
- flstr[#flstr + 1] = allow[2]
- end
- end
- end
- else
- error("invalid include flag: " .. tostring(k))
- end
- end
- flstr = table.concat(flstr, "&")
- if #flstr > 0 then
- self:write_raw("&", flstr)
- end
- end
- self:write_raw("}}")
- if not nonl then
- self:write_nl()
- end
- return self
+ write_include = function(self, tp, name, flags)
+ return write_include(self, tp, name, flags)
end,
write_editable = function(self, ns, name)