projects
/
project
/
luci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libs/web: add support for string templates to luci.template module
[project/luci.git]
/
modules
/
base
/
luasrc
/
template.lua
diff --git
a/modules/base/luasrc/template.lua
b/modules/base/luasrc/template.lua
index
72127d1
..
ea01d3c
100644
(file)
--- a/
modules/base/luasrc/template.lua
+++ b/
modules/base/luasrc/template.lua
@@
-50,6
+50,13
@@
function render(name, scope)
return Template(name):render(scope or getfenv(2))
end
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()
-- Template class
Template = util.class()
@@
-59,11
+66,14
@@
Template.cache = setmetatable({}, {__mode = "v"})
-- Constructor - Reads and compiles the template on-demand
-- 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
-- Create a new namespace for this template
self.viewns = context.viewns
@@
-72,16
+82,22
@@
function Template.__init__(self, name)
-- Compile template
local err
-- 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"))
-- 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
+ else
if name then
self.cache[name] = self.template
end
end
self.cache[name] = self.template
end
end