12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Fri, 16 May 2014 11:48:42 +0200
- Subject: libs/web: add support for string templates to luci.template module
- diff --git a/libs/web/luasrc/template.lua b/libs/web/luasrc/template.lua
- index 72127d1..ea01d3c 100644
- --- a/libs/web/luasrc/template.lua
- +++ b/libs/web/luasrc/template.lua
- @@ -50,6 +50,13 @@ function render(name, scope)
- return Template(name):render(scope or getfenv(2))
- end
-
- +--- Render a template from a string.
- +-- @param template Template string
- +-- @param scope Scope to assign to template (optional)
- +function render_string(template, scope)
- + return Template(nil, template):render(scope or getfenv(2))
- +end
- +
-
- -- Template class
- Template = util.class()
- @@ -59,11 +66,14 @@ Template.cache = setmetatable({}, {__mode = "v"})
-
-
- -- Constructor - Reads and compiles the template on-demand
- -function Template.__init__(self, name)
- +function Template.__init__(self, name, template)
- + if name then
- + self.template = self.cache[name]
- + self.name = name
- + else
- + self.name = "[string]"
- + end
-
- - self.template = self.cache[name]
- - self.name = name
- -
- -- Create a new namespace for this template
- self.viewns = context.viewns
-
- @@ -72,16 +82,22 @@ function Template.__init__(self, name)
-
- -- Compile template
- local err
- - local sourcefile = viewdir .. "/" .. name .. ".htm"
- + local sourcefile
-
- - self.template, _, err = tparser.parse(sourcefile)
- + if name then
- + sourcefile = viewdir .. "/" .. name .. ".htm"
- + self.template, _, err = tparser.parse(sourcefile)
- + else
- + sourcefile = "[string]"
- + self.template, _, err = tparser.parse_string(template)
- + end
-
- -- If we have no valid template throw error, otherwise cache the template
- if not self.template then
- error("Failed to load template '" .. name .. "'.\n" ..
- "Error while parsing template '" .. sourcefile .. "':\n" ..
- (err or "Unknown syntax error"))
- - else
- + elseif name then
- self.cache[name] = self.template
- end
- end
|