diff --git a/etlua.lua b/etlua.lua index f384d65..6bf604a 100644 --- a/etlua.lua +++ b/etlua.lua @@ -316,15 +316,18 @@ do setfenv(fn, combined_env) return fn(buffer, #buffer, tostring, concat, html_escape) end, - compile_to_lua = function(self, str) + compile_to_lua = function(self, str, ...) local success, err = self:parse(str) if not (success) then return nil, err end - return self:chunks_to_lua() + return self:chunks_to_lua(...) end, - chunks_to_lua = function(self) - local r = Renderer() + chunks_to_lua = function(self, renderer_cls) + if renderer_cls == nil then + renderer_cls = Renderer + end + local r = renderer_cls() r:header() local _list_0 = self.chunks for _index_0 = 1, #_list_0 do diff --git a/etlua.moon b/etlua.moon index cd9ad70..757d6dd 100644 --- a/etlua.moon +++ b/etlua.moon @@ -69,7 +69,6 @@ class Renderer @push "_b[_b_i] = ", ... @push "\n" if ... - class Parser open_tag: "<%" close_tag: "%>" @@ -230,14 +229,14 @@ class Parser setfenv fn, combined_env fn buffer, #buffer, tostring, concat, html_escape - compile_to_lua: (str) => + compile_to_lua: (str, ...) => success, err = @parse str return nil, err unless success - @chunks_to_lua! + @chunks_to_lua ... -- generates the code of the template - chunks_to_lua: => - r = Renderer! + chunks_to_lua: (renderer_cls=Renderer) => + r = renderer_cls! r\header! for chunk in *@chunks