mruby-lua calls Lua script engine from mruby. It provides to use many Lua scripts written for embedded host on mruby environment.
- liblua5.2 libraries and headers.
I checked to build on Debian GNU/Linux x86, LMDE2 x64 and MinGW32 on MS-Windows7.
Class Lua provides Lua script engine. It has a pointer to lua_State structure.
new -> self- Create instance of Lua script engine.
-
dostring(script_string) -> nil- Run Lua script from string object.
-
dofile(script_file_path) -> nil- Run Lua script from file.
-
[key] -> object, [key] = object- Set or Get global variable from Lua.
lua = Lua.new
script =<<"EOF"
function twice(x)
return x * 2
end
a = 10
b = 20
print(a * twice(b))
EOF
lua.dostring script
=> 400
lua = Lua.new
lua.dofile "test/fib.lua"
Get global variable from Lua.
lua = Lua.new
lua.dostring "a = 10; b = 20; c = a * b"
p lua["a"] # => 10
p lua["b"] # => 20
p lua["c"] # => 200
lua.dostring "vec1 = { x = 0.0, y = 1.0, z = 3.0 }"
p lua["vec1"]
# => {"x"=>0, "y"=>1, "z"=>3}
Set global variable to Lua.
lua = Lua.new
lua["a"] = 123
lua["b"] = 23.45
lua["c"] = true
lua["d"] = nil
lua.dostring "print(a)" # => 123
lua.dostring "print(b)" # => 23.45
lua.dostring "print(c)" # => true
lua.dostring "print(d)" # => nil
| MRuby type | To Lua | From Lua | Lua type |
|---|---|---|---|
| Nil | o | o | NIL |
| Fixnum | o | o | NUMBER |
| Float | o | o | NUMBER |
| String | o | o | STRING |
| array | TABLE | ||
| hash | o | TABLE | |
| C pointer | o | FUNCTION(c) | |
| - | FUNCTION | ||
| Exception | - | ||
| Bool | o | o | BOOLEAN |
| - | USERDATA | ||
| - | LIGHTUSERDATA | ||
| - | THREAD |