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

2.2 KiB
Raw Blame History

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 集成和安全策略
    • 需要添加完整的表达式语法参考文档