libs/web: Return more verbose error messages when template execution fails
authorSteven Barth <steven@midlink.org>
Sat, 30 Aug 2008 20:32:00 +0000 (20:32 +0000)
committerSteven Barth <steven@midlink.org>
Sat, 30 Aug 2008 20:32:00 +0000 (20:32 +0000)
libs/web/luasrc/template.lua

index 907403f..d49bcea 100644 (file)
@@ -144,6 +144,7 @@ setmetatable(Template.cache, {__mode = "v"})
 -- Constructor - Reads and compiles the template on-demand
 function Template.__init__(self, name) 
        self.template = self.cache[name]
+       self.name = name
        
        -- Create a new namespace for this template
        self.viewns = {}
@@ -226,7 +227,10 @@ function Template.render(self, scope)
        luci.util.updfenv(self.template, self.viewns)
        
        -- Now finally render the thing
-       self.template()
+       local stat, err = luci.util.copcall(self.template)
+       if not stat then
+               error("Error in template %s: %s" % {self.name, err})
+       end
        
        -- Reset environment
        setfenv(self.template, oldfenv)