Moonscript compiler for the Gopher Lua VM
Very experimental... use with caution. This module provides methods for compiling Moonscript code to Lua from Go or Lua (Gopher-Lua) programs. Additionally this repository contains an amalgamation bundle of the Moonscript Lua library (modified to use only pure-Lua modules) that can be used in Lua or LuaJIT programs without any external dependencies (see examples/pure_example.lua for usage).
See the godoc for documentation...
go get -v -u github.com/rucuriousyet/gmoonscript
Example usage from Gopher-Lua:
package main
import (
"github.com/cosmotek/gmoonscript"
lua "github.com/yuin/gopher-lua"
)
funcmain() {
state:=lua.NewState()
state.PreloadModule("moonc", gmoonscript.Loader)
err:=state.DoString(`local moonscript_code = [[class Thing name: "unknown"class Person extends Thing say_name: => print "Hello, I am #{@name}!"with Person! .name = "MoonScript" \say_name!]]local moonc = require("moonc")lua_code, err = moonc.compile(moonscript_code)if err ~= nil then print(err)else loadstring(lua_code)()end `)
iferr!=nil {
panic(err)
}
}Example usage from Go
package main
import lua "github.com/yuin/gopher-lua"import"github.com/cosmotek/gmoonscript"funcmain() {
state:=lua.NewState()
moonCode:=`class Thing name: "unknown"class Person extends Thing say_name: => print "Hello, I am #{@name}!"with Person! .name = "MoonScript" \say_name! `luaCode, err:=gmoonscript.Compile(state, moonCode)
iferr!=nil {
panic(err)
}
err=state.DoString(luaCode)
iferr!=nil {
panic(err)
}
}