end
M.Writer = util.Object:clone {
+ INCLUDE_PAGE = 0,
+ INCLUDE_SECTION = 1,
+ INCLUDE_NAMESPACE = 2,
+ INCLUDE_TAG = 3,
+
__ctor = function(self, path)
local subs
if type(path) == "table" then
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"
+ }
+ 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 ipairs(flags) do
+ if v then
+ flstr[#flstr + 1] = 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
+ end,
+
write_fmt = function(self, fmt1, fmt2, ...)
self:write_raw(fmt1, ...)
self:write_raw(fmt2)