2023-05-14 10:39:43 +08:00
|
|
|
import _pika_lua
|
|
|
|
|
|
|
|
"""
|
2023-05-14 10:43:02 +08:00
|
|
|
PikaPython lua auto binging module
|
|
|
|
|
|
|
|
- Import lua module as a python module
|
2023-05-14 10:39:43 +08:00
|
|
|
|
|
|
|
``` python
|
|
|
|
import pika_lua
|
|
|
|
|
|
|
|
# import lua module as a python module
|
|
|
|
lua_math = pika_lua.require("math")
|
|
|
|
|
|
|
|
# get vars from lua module
|
|
|
|
print(lua_math.pi)
|
|
|
|
|
|
|
|
# call lua function
|
|
|
|
print(lua_math.sin(1))
|
|
|
|
```
|
|
|
|
|
2023-05-14 10:43:02 +08:00
|
|
|
- Eval lua code
|
2023-05-14 10:39:43 +08:00
|
|
|
|
|
|
|
``` python
|
|
|
|
import pika_lua
|
|
|
|
|
|
|
|
# eval lua code
|
|
|
|
print(pika_lua.eval("print(1 + 1)"))
|
2023-05-14 10:43:02 +08:00
|
|
|
```
|
2023-05-14 10:39:43 +08:00
|
|
|
"""
|
|
|
|
|
|
|
|
def eval(cmd: str):
|
|
|
|
return _pika_lua.eval(cmd)
|
|
|
|
|
|
|
|
def evalLine(line: str):
|
|
|
|
return _pika_lua.evalLine(line)
|
|
|
|
|
2023-05-14 11:17:07 +08:00
|
|
|
def getVar(name: str):
|
|
|
|
print("getVar: %s" % name)
|
|
|
|
return eval("return %s" % name)
|
|
|
|
|
|
|
|
def setVar(name: str, value):
|
|
|
|
print("setVar: %s = %s" % (name, value))
|
|
|
|
eval("%s = %s" % (name, value))
|
|
|
|
|
|
|
|
class LuaModuleProxy:
|
|
|
|
_name:str = ''
|
|
|
|
def __init__(self, name: str):
|
|
|
|
self._name = name
|
|
|
|
|
|
|
|
def __getattr__(self, name: str):
|
|
|
|
return getVar("%s.%s" % (self._name, name))
|
|
|
|
|
|
|
|
def __setattr__(self, name: str, value) -> None:
|
|
|
|
if (name == "_name"):
|
|
|
|
setattr(self, name, value)
|
|
|
|
else:
|
|
|
|
setVar("%s.%s" % (self._name, name), value)
|
|
|
|
|
|
|
|
def require(module: str) -> LuaModuleProxy:
|
|
|
|
try:
|
|
|
|
eval("require('%s')" % module)
|
|
|
|
return LuaModuleProxy(module)
|
|
|
|
except:
|
|
|
|
print("require module '%s' failed" % module)
|
|
|
|
return None
|