diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2017-09-21 21:15:37 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2017-09-21 21:15:37 -0700 |
| commit | 0489456a4efa512677dd7d27f1ca5b90b19c6a68 (patch) | |
| tree | 5b0ddaf83978cadfd935f2758f41552da977ea40 | |
| parent | 26d72ce56ed1e9066edfbb3fedd8f5570d0cb5f4 (diff) | |
Fixed lua block vars.
| -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] |
