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