diff options
| -rwxr-xr-x | core.moon | 13 | ||||
| -rw-r--r-- | nomic.moon | 1 |
2 files changed, 14 insertions, 0 deletions
@@ -194,5 +194,18 @@ if (not %condition) %body g\def [[do %action]], (vars)=> return vars.action(self,vars) +g\defmacro [[lua %lua_code]], (vars,helpers,ftype)=> + with helpers + lua_code = vars.lua_code.value + switch lua_code.type + when "List" + .lua table.concat[i.value.value for i in *lua_code.value] + else + .lua(lua_code.value) + return nil + +g\defmacro [[macro %spec %body]], (vars,helpers,ftype)=> + self\simplemacro vars.spec.value.value, vars.body.value.value.src + return g @@ -187,6 +187,7 @@ class Game return invocations, arg_names defmacro: (spec, fn)=> + assert fn, "No function supplied" invocations,arg_names = self\get_invocations spec for invocation in *invocations @macros[invocation] = {fn, arg_names} |
