使用 simpleeval 库替换原有的简单正则匹配,支持复杂的条件表达式评估。新增 ConditionEvaluator 类处理条件逻辑,支持比较运算、逻辑运算、成员测试、数学计算和内置函数,同时保持向后兼容性。
49 lines
2.2 KiB
Markdown
49 lines
2.2 KiB
Markdown
## 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 集成和安全策略
|
||
- 需要添加完整的表达式语法参考文档
|