local ltn12 = require "luci.ltn12"
local template = require "luci.template"
-local ipairs = ipairs
+local ipairs, getfenv, pairs, require, unpack = ipairs, getfenv, pairs, require, unpack
+local luci = luci
module "luci.uvldoc.renderer"
Generator = util.class()
-function Generator.__init__(self, schemes, output)
+function Generator.__init__(self, schemes, output, uvlpath)
self.names = schemes
self.output = output or "doc"
self.schemes = {}
fs.mkdir(self.output)
for i, file in ipairs(self.additionals) do
- fs.copy(self.sourcedir .. file, self.output)
+ fs.copy(self.sourcedir .. file, self.output .. "/" .. file)
end
template.compiler_mode = "memory"
template.viewdir = self.sourcedir
+ template.context.viewns = {
+ include = function(name) template.Template(name):render(getfenv(2)) end,
+ pairs = pairs,
+ ipairs = ipairs,
+ unpack = unpack,
+ luci = luci,
+ require = require
+ }
self:_make_index()
- for scheme, file in util.kspairs(self.schemes) do
+ for scheme, package in pairs(self.schemes) do
self:_make_package(scheme)
+ for type, section in pairs(package.sections) do
+ self:_make_section(scheme, type)
+ end
end
end
sink()
end
+function Generator._make_section(self, scheme, section)
+ local t = template.Template("section.xml")
+ local sink = ltn12.sink.file(
+ io.open(self.output .. "/" .. self:_section_filename(scheme, section), "w")
+ )
+ local pkg = self.schemes[scheme]
+ t:render({self = self, package = pkg,
+ scheme = scheme, type=section, section=pkg.sections[section],
+ write = sink})
+ sink()
+end
+
function Generator._index_filename(self)
return "index%s" % self.extension
end
function Generator._scheme_filename(self, scheme)
return "scheme.%s%s" % {scheme, self.extension}
end
+
+function Generator._section_filename(self, scheme, section)
+ if self.schemes[scheme] and self.schemes[scheme].sections[section] then
+ return "section.%s.%s%s" % {scheme, section, self.extension}
+ end
+end
+
+function Generator._variable_target(self, scheme, section, variable)
+ if self.schemes[scheme] and self.schemes[scheme].variables[section] and
+ self.schemes[scheme].variables[section][variable] then
+ return "section.%s.%s%s#variable.%s" % {scheme, section, self.extension, variable}
+ end
+end
\ No newline at end of file