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

2.4 KiB
Raw Blame History

1. 依赖和环境准备

  • 1.1 确认 simpleeval 已安装(已在探索阶段完成)
  • 1.2 验证 simpleeval 版本和功能可用性

2. 核心实现

  • 2.1 创建 core/condition_evaluator.py 文件
  • 2.2 实现 ConditionEvaluator 类的基本结构
  • 2.3 实现 _get_evaluator 方法,配置 EvalWithCompoundTypes
  • 2.4 实现 _extract_expression 方法,提取表达式内容
  • 2.5 实现 evaluate_condition 方法,集成 simpleeval
  • 2.6 实现错误处理,映射 simpleeval 异常到 YAMLError
  • 2.7 添加表达式长度限制MAX_EXPRESSION_LENGTH = 500
  • 2.8 配置白名单函数len, bool, abs, min, max

3. 集成到 Template 类

  • 3.1 在 Template.init 中初始化 ConditionEvaluator
  • 3.2 修改 Template.evaluate_condition 方法,委托给 ConditionEvaluator
  • 3.3 移除旧的正则匹配实现代码
  • 3.4 确保 Template.render 方法正确调用新的 evaluate_condition

4. 测试实现

  • 4.1 创建 tests/unit/test_condition_evaluator.py 文件
  • 4.2 测试比较运算符(==, !=, >, <, >=, <=
  • 4.3 测试逻辑运算符and, or, not
  • 4.4 测试成员测试in, not in
  • 4.5 测试列表和元组字面量
  • 4.6 测试数学运算(+, -, *, /, %, **
  • 4.7 测试内置函数int, float, str, len, bool, abs, min, max
  • 4.8 测试复杂逻辑组合表达式
  • 4.9 测试错误处理(变量未定义、函数未定义、语法错误)
  • 4.10 测试安全限制(表达式过长、禁止的特性)
  • 4.11 更新 tests/unit/test_template.py 中的条件渲染测试
  • 4.12 添加集成测试,验证完整的模板渲染流程

5. 文档更新

  • 5.1 更新 README.md 的条件渲染章节
  • 5.2 添加新的表达式语法示例到 README.md
  • 5.3 添加支持的操作符和函数列表到 README.md
  • 5.4 更新 README_DEV.md说明 ConditionEvaluator 架构
  • 5.5 更新 README_DEV.md说明 simpleeval 集成和安全策略
  • 5.6 创建或更新示例文件,展示新的条件表达式能力

6. 验证和清理

  • 6.1 运行完整测试套件,确保所有测试通过
  • 6.2 手动测试各种表达式场景
  • 6.3 验证错误信息的清晰度和有用性
  • 6.4 检查代码风格和注释完整性
  • 6.5 清理 temp 目录中的临时文件(保留有用的示例)
  • 6.6 确认没有遗留的调试代码或注释