From a9875adb29da9f42da5e6e8839917a0b76d5c19d Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Sat, 6 Sep 2008 20:18:00 +0000 Subject: [PATCH] Merge branch 'uvldoc' --- libs/uvldoc/Makefile | 2 + libs/uvldoc/luasrc/uvldoc/proto/xhtml/footer.xml | 9 +++ libs/uvldoc/luasrc/uvldoc/proto/xhtml/header.xml | 15 ++++ libs/uvldoc/luasrc/uvldoc/proto/xhtml/index.xml | 11 +++ libs/uvldoc/luasrc/uvldoc/proto/xhtml/menu.xml | 7 ++ libs/uvldoc/luasrc/uvldoc/proto/xhtml/scheme.xml | 2 + libs/uvldoc/luasrc/uvldoc/renderer.lua | 87 ++++++++++++++++++++++++ 7 files changed, 133 insertions(+) create mode 100644 libs/uvldoc/Makefile create mode 100644 libs/uvldoc/luasrc/uvldoc/proto/xhtml/footer.xml create mode 100644 libs/uvldoc/luasrc/uvldoc/proto/xhtml/header.xml create mode 100644 libs/uvldoc/luasrc/uvldoc/proto/xhtml/index.xml create mode 100644 libs/uvldoc/luasrc/uvldoc/proto/xhtml/menu.xml create mode 100644 libs/uvldoc/luasrc/uvldoc/proto/xhtml/scheme.xml create mode 100644 libs/uvldoc/luasrc/uvldoc/renderer.lua diff --git a/libs/uvldoc/Makefile b/libs/uvldoc/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/libs/uvldoc/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/libs/uvldoc/luasrc/uvldoc/proto/xhtml/footer.xml b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/footer.xml new file mode 100644 index 000000000..5f8c0b9b4 --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/footer.xml @@ -0,0 +1,9 @@ + + + +
+generated on <%=os.date("%c")%> with LuCI UVLDoc - written by Steven Barth and Jo-Philipp Wich +
+ + + \ No newline at end of file diff --git a/libs/uvldoc/luasrc/uvldoc/proto/xhtml/header.xml b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/header.xml new file mode 100644 index 000000000..9f18ad379 --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/header.xml @@ -0,0 +1,15 @@ + + + + + + + LuCI UVLDoc + + + + + +
diff --git a/libs/uvldoc/luasrc/uvldoc/proto/xhtml/index.xml b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/index.xml new file mode 100644 index 000000000..6fbfa374d --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/index.xml @@ -0,0 +1,11 @@ +<%+header.xml%> +

UCI Documentation

+ +<% for k, v in luci.util.kspairs(self.schemes) do %> + + + + +<% end %> +
<%=k%><%=self.schemes[k].title%>
+<%+footer.xml%> \ No newline at end of file diff --git a/libs/uvldoc/luasrc/uvldoc/proto/xhtml/menu.xml b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/menu.xml new file mode 100644 index 000000000..402e6388e --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/menu.xml @@ -0,0 +1,7 @@ +

LuCI UVLDoc

+ \ No newline at end of file diff --git a/libs/uvldoc/luasrc/uvldoc/proto/xhtml/scheme.xml b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/scheme.xml new file mode 100644 index 000000000..985809e77 --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/proto/xhtml/scheme.xml @@ -0,0 +1,2 @@ +<%+header.xml%> +<%+footer.xml%> \ No newline at end of file diff --git a/libs/uvldoc/luasrc/uvldoc/renderer.lua b/libs/uvldoc/luasrc/uvldoc/renderer.lua new file mode 100644 index 000000000..5fce5ec51 --- /dev/null +++ b/libs/uvldoc/luasrc/uvldoc/renderer.lua @@ -0,0 +1,87 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth +Copyright 2008 Jo-Philipp Wich + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- + +local io = require "io" +local fs = require "luci.fs" +local uvl = require "luci.uvl" +local util = require "luci.util" +local ltn12 = require "luci.ltn12" +local template = require "luci.template" + +local ipairs = ipairs + +module "luci.uvldoc.renderer" + + +Generator = util.class() + +function Generator.__init__(self, schemes, output) + self.names = schemes + self.output = output or "doc" + self.schemes = {} + self.uvl = uvl.UVL() + + self.extension = ".xml" + self.additionals = {"uvldoc.css"} + self.sourcedir = util.libpath() .. "/uvldoc/proto/xhtml/" +end + + +function Generator.make(self) + for i, scheme in ipairs(self.names) do + self.schemes[scheme] = self.uvl:get_scheme(scheme) + end + + fs.mkdir(self.output) + + for i, file in ipairs(self.additionals) do + fs.copy(self.sourcedir .. file, self.output) + end + + template.compiler_mode = "memory" + template.viewdir = self.sourcedir + + self:_make_index() + + for scheme, file in util.kspairs(self.schemes) do + self:_make_package(scheme) + end +end + +function Generator._make_index(self) + local t = template.Template("index.xml") + local sink = ltn12.sink.file( + io.open(self.output .. "/" .. self:_index_filename(), "w") + ) + t:render({self = self, write = sink}) + sink() +end + +function Generator._make_package(self, scheme) + local t = template.Template("scheme.xml") + local sink = ltn12.sink.file( + io.open(self.output .. "/" .. self:_scheme_filename(scheme), "w") + ) + t:render({self = self, package = self.schemes[scheme], scheme = scheme, 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 -- 2.11.0