diff options
| -rw-r--r-- | nomsu.lua | 10 | ||||
| -rwxr-xr-x | nomsu.moon | 10 |
2 files changed, 12 insertions, 8 deletions
@@ -754,19 +754,21 @@ do end local inner_vars = setmetatable({ }, { __index = function(_, key) - return error("vars[" .. tostring(repr(key)) .. "]") + return "vars[" .. tostring(repr(key)) .. "]" end }) - return "do\n" .. self:tree_to_value(vars.lua_code, inner_vars) .. "\nend", true + local lua = self:tree_to_value(vars.lua_code, inner_vars) + return "do\n" .. tostring(lua) .. "\nend", true end) self:defmacro("lua expr %lua_code", function(self, vars, kind) local lua_code = vars.lua_code.value local inner_vars = setmetatable({ }, { __index = function(_, key) - return error("vars[" .. tostring(repr(key)) .. "]") + return "vars[" .. tostring(repr(key)) .. "]" end }) - return self:tree_to_value(vars.lua_code, inner_vars) + local lua = self:tree_to_value(vars.lua_code, inner_vars) + return lua end) self:def("require %filename", function(self, vars) if not self.loaded_files[vars.filename] then @@ -536,13 +536,15 @@ class NomsuCompiler -- Sets up some core functionality @defmacro "lua block %lua_code", (vars, kind)=> if kind == "Expression" then error("Expected to be in statement.") - inner_vars = setmetatable({}, {__index:(_,key)-> error"vars[#{repr(key)}]"}) - return "do\n"..@tree_to_value(vars.lua_code, inner_vars).."\nend", true + inner_vars = setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) + lua = @tree_to_value(vars.lua_code, inner_vars) + return "do\n#{lua}\nend", true @defmacro "lua expr %lua_code", (vars, kind)=> lua_code = vars.lua_code.value - inner_vars = setmetatable({}, {__index:(_,key)-> error"vars[#{repr(key)}]"}) - return @tree_to_value(vars.lua_code, inner_vars) + inner_vars = setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) + lua = @tree_to_value(vars.lua_code, inner_vars) + return lua @def "require %filename", (vars)=> if not @loaded_files[vars.filename] |
