From 92f0f7d78afcc15b3631610313fb1c29ffc52c71 Mon Sep 17 00:00:00 2001 From: leaf corcoran Date: Mon, 28 Oct 2013 09:35:39 -0700 Subject: [PATCH] don't use coroutine to yield template code (fixes issue in lapis) --- etlua.lua | 14 +++++++++++--- etlua.moon | 9 ++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/etlua.lua b/etlua.lua index 62474e0..dfc94a3 100644 --- a/etlua.lua +++ b/etlua.lua @@ -204,9 +204,17 @@ do if name == nil then name = "etlua" end - local code_fn = coroutine.wrap(function() - return coroutine.yield(code) - end) + local code_fn + do + local code_ref = code + code_fn = function() + do + local ret = code_ref + code_ref = nil + return ret + end + end + end local fn, err = load(code_fn, name) if not (fn) then do diff --git a/etlua.moon b/etlua.moon index 9627f1c..8aab649 100644 --- a/etlua.moon +++ b/etlua.moon @@ -1,4 +1,4 @@ -VERSION = "1.0.1" +VERSION = "1.0.2" import insert, concat from table @@ -163,8 +163,11 @@ class Parser "#{err_msg} [#{source_line_no}]: #{source_line}" load: (code, name="etlua") => - code_fn = coroutine.wrap -> - coroutine.yield code + code_fn = do + code_ref = code + -> + with ret = code_ref + code_ref = nil fn, err = load code_fn, name