1
0

feat: 增强模板条件渲染表达式支持

使用 simpleeval 库替换原有的简单正则匹配,支持复杂的条件表达式评估。新增 ConditionEvaluator 类处理条件逻辑,支持比较运算、逻辑运算、成员测试、数学计算和内置函数,同时保持向后兼容性。
This commit is contained in:
2026-03-03 17:28:23 +08:00
parent 01a93ce13b
commit 16ca9d77cd
16 changed files with 1437 additions and 31 deletions

View File

@@ -0,0 +1,48 @@
## Why
当前的 visible 条件渲染功能仅支持简单的非空检查(`{var != ''}`),无法满足实际使用中的复杂条件判断需求。用户需要根据多个变量、逻辑组合、数值比较等条件来控制元素显示,但现有实现过于受限。通过引入成熟的表达式评估库 simpleeval可以提供强大且安全的条件表达式能力显著提升模板系统的灵活性。
## What Changes
- 引入 simpleeval 库作为条件表达式评估引擎
- 扩展 visible 字段支持的表达式类型:
- 比较运算符:`==`, `!=`, `>`, `<`, `>=`, `<=`
- 逻辑运算符:`and`, `or`, `not`
- 成员测试:`in`, `not in`
- 列表/元组字面量:`status in ['draft', 'review']`
- 数学运算:`+`, `-`, `*`, `/`, `%`, `**`
- 内置函数:`int()`, `float()`, `str()`, `len()`, `bool()`
- 增强错误处理,提供详细的错误信息和调试提示
- 添加表达式安全限制(最大长度、禁止危险操作)
- **BREAKING**: 移除旧版本的简单正则匹配实现,统一使用 simpleeval
## Capabilities
### New Capabilities
- `enhanced-condition-evaluation`: 基于 simpleeval 的增强条件表达式评估能力,支持复杂的逻辑判断、数学运算和成员测试
### Modified Capabilities
- `template-system`: 修改模板系统的条件渲染实现,从简单正则匹配升级为完整的表达式评估
## Impact
- **代码影响**
- `core/template.py`: 重写 `evaluate_condition` 方法
- `loaders/yaml_loader.py`: 可能需要更新验证逻辑
- 测试文件:需要大幅扩展测试用例覆盖新的表达式类型
- **依赖影响**
- 新增依赖simpleeval (轻量级,无额外依赖)
- 需要更新 `pyproject.toml`
- **用户影响**
- **BREAKING**: 旧的简单实现被移除,但由于旧语法 `{var != ''}` 在新实现中仍然有效,实际兼容性影响较小
- 用户需要学习新的表达式语法(但与 Python 表达式一致,学习成本低)
- 错误信息更详细,调试更容易
- **文档影响**
- README.md: 需要更新条件渲染章节,添加新的表达式示例
- README_DEV.md: 需要说明 simpleeval 集成和安全策略
- 需要添加完整的表达式语法参考文档