Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

lua-in-js

2.2.0 • Public • Published

lua-in-js

npm PRs Welcome GitHub   Badges are clickable!

A Lua to JS transpiler/runtime. This library is a rewrite of Starlight with a lot of improvements.

Install

npm i lua-in-js

API

Import

const luainjs = require(luainjs)
// or
import luainjs from 'luainjs'

Create the lua environment

Lua environments are isolated from each other (they got different global scopes)

const luaEnv = luainjs.createEnv()

A config object can be passed in for extra functionality

const luaEnv = luainjs.createEnv({
    LUA_PATH,   // default value of package.path
    fileExists, // function that takes in a path and returns a boolean
    loadFile,   // function that takes in a path and returns the content of a file
    stdin,      // string representing the standard input
    stdout,     // function representing the standard output
    osExit      // function called by os.exit
})

Execute a script or file

const luaScript = luaEnv.parse('print(\'Hello world!\')')
const returnValue = luaScript.exec()
const luaScript = luaEnv.parseFile('somefile.lua')
const returnValue = luaScript.exec()

parseFile uses config.fileExists and config.loadFile

Create a global library

Creating a global library allows you write APIs that you can use in the Lua environment.

function helloBuilder(name) {
    const NAME = luainjs.utils.coerceArgToString(name, 'sayHi', 1)
    return `Hello ${NAME}!`
}
 
const myLib = new luainjs.Table({ helloBuilder })
luaEnv.loadLib('myLib', myLib)
 
const helloStr = luaEnv.parse(`return myLib.helloBuilder('John')`).exec()
console.log(helloStr)

Check out the math lib for a more extensive example.

Example

Check out the test runner for a concrete example.

Missing functionality

  • coroutine library
  • debug library
  • utf8 library
  • io library
  • package.cpath
  • package.loadlib
  • string.dump
  • string.pack
  • string.packsize
  • string.unpack
  • os.clock
  • os.execute
  • os.getenv
  • os.remove
  • os.rename
  • os.tmpname

Install

npm i lua-in-js

DownloadsWeekly Downloads

27

Version

2.2.0

License

MIT

Unpacked Size

623 kB

Total Files

52

Last publish

Collaborators

  • avatar