feat,fix(): 优化funcs注册函数

- 优化 register 方法
This commit is contained in:
2025-04-07 16:35:14 +08:00
parent 4324cf37aa
commit 2e9f1c12f7

View File

@@ -22,23 +22,25 @@ from commons import settings
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Funcs:
class Funcs:
FUNC_MAPPING = { FUNC_MAPPING = {
"int": int, "int": int,
"float": float, "float": float,
"bool": bool "bool": bool
} # 内置函数有的直接放入mapping内置函数没有的在funcs中定义自动放入mapping } # 内置函数有的直接放入mapping内置函数没有的在funcs中定义自动放入mapping
@classmethod @classmethod
def register(cls, name: str): def register(cls, name: str | None = None):
def decorator(func): def decorator(func):
if name is None:
cls.FUNC_MAPPING[func.__name__] = func
cls.FUNC_MAPPING[name] = func cls.FUNC_MAPPING[name] = func
return func return func
return decorator return decorator
@Funcs.register("url_unquote") @Funcs.register("url_unquote")
def url_unquote(s: str) -> str: def url_unquote(s: str) -> str:
return urllib.parse.unquote(s) return urllib.parse.unquote(s)
@@ -49,20 +51,24 @@ def to_string(s) -> str:
# 将数据转换为str类型。 # 将数据转换为str类型。
return f"'{s}'" return f"'{s}'"
@Funcs.register("time_str") @Funcs.register("time_str")
def time_str() -> str: def time_str() -> str:
return str(time.time()) return str(time.time())
@Funcs.register("add") @Funcs.register("add")
def add(a, b): def add(a, b):
return str(int(a) + int(b)) return str(int(a) + int(b))
@Funcs.register("sql") @Funcs.register("sql")
def sql(s: str) -> str: def sql(s: str) -> str:
res = db.execute_sql(s) res = db.execute_sql(s)
return res[0][0] return res[0][0]
@Funcs.register("new_id") @Funcs.register("new_id")
def new_id(): def new_id():
# 自增,永不重复 # 自增,永不重复
@@ -72,6 +78,7 @@ def new_id():
return id_file["id"] return id_file["id"]
@Funcs.register("last_id") @Funcs.register("last_id")
def last_id() -> str: def last_id() -> str:
# 不自增,只返回结果 # 不自增,只返回结果
@@ -79,6 +86,7 @@ def last_id() -> str:
id_file = FileHandle(settings.id_path) id_file = FileHandle(settings.id_path)
return id_file["id"] return id_file["id"]
@Funcs.register("md5") @Funcs.register("md5")
def md5(content: str) -> str: def md5(content: str) -> str:
# 1原文转为字节 # 1原文转为字节
@@ -86,6 +94,7 @@ def md5(content: str) -> str:
result = hashlib.md5(content).hexdigest() result = hashlib.md5(content).hexdigest()
return result return result
@Funcs.register("base64_encode") @Funcs.register("base64_encode")
def base64_encode(content: str) -> str: def base64_encode(content: str) -> str:
# 1原文转二进制 # 1原文转二进制
@@ -97,6 +106,7 @@ def base64_encode(content: str) -> str:
return encode_str return encode_str
@Funcs.register("base64_decode") @Funcs.register("base64_decode")
def base64_decode(content: str) -> str: def base64_decode(content: str) -> str:
# 1原文转二进制 # 1原文转二进制
@@ -108,14 +118,18 @@ def base64_decode(content: str) -> str:
return decode_str return decode_str
@Funcs.register("rsa_encode") @Funcs.register("rsa_encode")
def rsa_encode(content: str) -> str: def rsa_encode(content: str) -> str:
... ...
@Funcs.register("rsa_decode") @Funcs.register("rsa_decode")
def rsa_decode(content: str) -> str: def rsa_decode(content: str) -> str:
... ...
@Funcs.register()
def func_name_test():
...
if __name__ == '__main__': if __name__ == '__main__':
# res = url_unquote("%E6%88%90%E5%8A%9F%E3%80%82") # res = url_unquote("%E6%88%90%E5%8A%9F%E3%80%82")