support var proxy for pika_lua

This commit is contained in:
lyon 2023-05-14 11:17:45 +08:00
parent c1ac93019e
commit fc7c881ce5
4 changed files with 31 additions and 8 deletions

View File

@ -76,8 +76,6 @@ __exit:
return ret; return ret;
} }
PikaObj* _pika_lua_require(PikaObj* self, char* module) {}
void _pika_lua___del__(PikaObj* self){ void _pika_lua___del__(PikaObj* self){
pika_debug("lua close!\r\n"); pika_debug("lua close!\r\n");
lua_close(g_pika_L); // 关闭 Lua 状态机,释放所有关联的资源 lua_close(g_pika_L); // 关闭 Lua 状态机,释放所有关联的资源

View File

@ -12,6 +12,4 @@ def evalLine(line: str) -> any: ...
class LuaTable: class LuaTable:
pass pass
def require(module: str)-> LuaTable: ...
def __del__():... def __del__():...

View File

@ -34,5 +34,32 @@ def eval(cmd: str):
def evalLine(line: str): def evalLine(line: str):
return _pika_lua.evalLine(line) return _pika_lua.evalLine(line)
def require(module: str): def getVar(name: str):
return _pika_lua.require(module) # 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

View File

@ -35,11 +35,11 @@ def evalLine(line: str):
return _pika_lua.evalLine(line) return _pika_lua.evalLine(line)
def getVar(name: str): def getVar(name: str):
print("getVar: %s" % name) # print("getVar: %s" % name)
return eval("return %s" % name) return eval("return %s" % name)
def setVar(name: str, value): def setVar(name: str, value):
print("setVar: %s = %s" % (name, value)) # print("setVar: %s = %s" % (name, value))
eval("%s = %s" % (name, value)) eval("%s = %s" % (name, value))
class LuaModuleProxy: class LuaModuleProxy: