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

2.1 KiB
Raw Blame History

Template System (Delta Spec)

MODIFIED Requirements

Requirement: 系统必须支持条件渲染

系统 SHALL 支持基于变量值的条件渲染,通过 visible 字段控制元素是否显示。条件表达式使用 simpleeval 引擎评估,支持复杂的逻辑判断、比较运算、成员测试和数学计算。

Scenario: 显示满足条件的元素

  • WHEN 元素定义了 visible: "{count > 0}",且用户提供的 count 大于 0
  • THEN 系统渲染该元素

Scenario: 隐藏不满足条件的元素

  • WHEN 元素定义了 visible: "{count > 0}",但用户提供的 count 等于 0
  • THEN 系统跳过该元素,不渲染到幻灯片中

Scenario: 复杂逻辑条件

  • WHEN 元素定义了 visible: "{count > 0 and status == 'active'}",且两个条件都满足
  • THEN 系统渲染该元素

Scenario: 成员测试条件

  • WHEN 元素定义了 visible: "{status in ['draft', 'review']}",且 status 为 "draft"
  • THEN 系统渲染该元素

Scenario: 数学运算条件

  • WHEN 元素定义了 visible: "{(price * discount) > 50}",且计算结果大于 50
  • THEN 系统渲染该元素

Scenario: 条件表达式语法错误

  • WHEN visible 字段包含无效的条件表达式(如 {count > }
  • THEN 系统抛出错误,提示"条件表达式语法错误",并显示具体的语法问题

Scenario: 条件表达式中的变量未定义

  • WHEN visible 字段引用了未定义的变量(如 {undefined_var > 0}
  • THEN 系统抛出错误,提示"条件表达式中的变量未定义: undefined_var",并列出可用变量

Scenario: 条件表达式使用不支持的函数

  • WHEN visible 字段使用了不在白名单中的函数(如 {eval(code)}
  • THEN 系统抛出错误,提示"条件表达式中使用了不支持的函数: eval"

Scenario: 向后兼容的简单表达式

  • WHEN 元素定义了 visible: "{subtitle != ''}"(旧语法格式)
  • THEN 系统使用新的 simpleeval 引擎正确评估该表达式