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

53 lines
2.1 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.
# 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 引擎正确评估该表达式