diff --git a/etlua.lua b/etlua.lua index 3657c97..fd28bac 100644 --- a/etlua.lua +++ b/etlua.lua @@ -175,7 +175,13 @@ do return nil, err end return function(...) - return self:run(fn, ...) + local buffer + buffer, err = self:run(fn, ...) + if buffer then + return concat(buffer) + else + return nil, err + end end end, parse = function(self, str) @@ -293,7 +299,7 @@ do error("unknown type " .. tostring(t)) end end - push("return _concat(_b)") + push("return _b") return concat(buffer, "\n") end } @@ -321,10 +327,10 @@ local compile = (function() end end)() local render -render = function(str, env) +render = function(str, ...) local fn, err = compile(str) if fn then - return fn(env) + return fn(...) else return nil, err end diff --git a/etlua.moon b/etlua.moon index 911215d..b8708dd 100644 --- a/etlua.moon +++ b/etlua.moon @@ -134,7 +134,12 @@ class Parser return nil, err unless success fn, err = @load @chunks_to_lua! return nil, err unless fn - (...) -> @run fn, ... + (...) -> + buffer, err = @run fn, ... + if buffer + concat buffer + else + nil, err parse: (@str) => assert type(@str) == "string", "expecting string for parse" @@ -228,7 +233,7 @@ class Parser else error "unknown type #{t}" - push "return _concat(_b)" + push "return _b" concat buffer, "\n" compile = Parser!\compile