feat: 完成部分界面重构
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
class Evalizer:
|
||||
class Evalizer():
|
||||
"""几乎无副作用的模板系统
|
||||
|
||||
接受环境信息并创建一个模板解析工具, 工具传入参数支持list, dict及其嵌套
|
||||
@@ -6,7 +6,6 @@ class Evalizer:
|
||||
"""
|
||||
|
||||
# TODO: 弃用风险极高的 eval
|
||||
# 理论上已经限制了全局函数 但eval仍有风险
|
||||
# TODO: 异步/多线程执行避免堵塞
|
||||
def __init__(self, environment: dict) -> None:
|
||||
self.env = environment
|
||||
@@ -19,6 +18,8 @@ class Evalizer:
|
||||
return list(map(self.travel, anyobj))
|
||||
elif isinstance(anyobj, dict):
|
||||
return dict(map(self.travel, anyobj.items()))
|
||||
elif isinstance(anyobj, tuple):
|
||||
return tuple(map(self.travel, anyobj))
|
||||
elif isinstance(anyobj, str):
|
||||
if anyobj.startswith("eval:"):
|
||||
return self.eval_with_env(anyobj[5:])
|
||||
@@ -28,7 +29,7 @@ class Evalizer:
|
||||
return anyobj
|
||||
|
||||
def eval_with_env(self, s: str):
|
||||
ret = eval(s, {}, self.env)
|
||||
ret = eval(s, globals(), self.env)
|
||||
if not isinstance(ret, str):
|
||||
ret = str(ret)
|
||||
return ret
|
||||
|
||||
Reference in New Issue
Block a user