1
0
Files
PPTX/openspec/changes/archive/2026-03-03-enhance-visible-condition-rendering/proposal.md
lanyuanxiaoyao 16ca9d77cd feat: 增强模板条件渲染表达式支持
使用 simpleeval 库替换原有的简单正则匹配,支持复杂的条件表达式评估。新增 ConditionEvaluator 类处理条件逻辑,支持比较运算、逻辑运算、成员测试、数学计算和内置函数,同时保持向后兼容性。
2026-03-03 17:28:23 +08:00

49 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 集成和安全策略
- 需要添加完整的表达式语法参考文档