feat: initial implementation of html2pptx with OpenSpec documentation
Add core Python script (yaml2pptx.py) for converting YAML to PowerPoint: - Element rendering: text, image, shape, table, chart - Template system with placeholders - PPTX generation with python-pptx OpenSpec workflow setup: - 3 archived changes: browser-preview, template-dir-cli, yaml-to-pptx - 7 main specifications covering all core modules - Config and documentation structure 30 files changed, 4984 insertions(+)
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
## Why
|
||||
|
||||
当前脚本默认使用相对路径 `templates_dir='templates'` 加载模板,这限制了脚本的可移植性——脚本只能在包含 templates 目录的项目根目录下运行。为了让脚本可以在任何位置使用,需要支持通过命令行参数明确指定模板目录,并移除隐式的默认行为。
|
||||
|
||||
## What Changes
|
||||
|
||||
- 添加 `--template-dir` 命令行参数,允许用户指定模板文件目录
|
||||
- **BREAKING**: 移除默认模板目录行为,使用模板时必须通过 `--template-dir` 明确指定模板目录
|
||||
- 添加模板名称验证,禁止在模板名称中使用路径分隔符(`/` 或 `\`),确保模板只能从指定目录的一层加载
|
||||
- 改进错误提示信息,明确告知用户模板查找位置和失败原因
|
||||
- 不使用模板的纯自定义幻灯片不受影响,无需指定 `--template-dir`
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `template-directory-cli`: 支持通过命令行参数指定模板目录,包括参数解析、路径验证、错误提示
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `template-system`: 修改模板加载逻辑,从硬编码的 `templates/` 目录改为必须明确指定的目录;添加模板名称验证规则
|
||||
|
||||
## Impact
|
||||
|
||||
**代码影响**:
|
||||
- `Template.__init__` 方法(184行):修改模板路径解析逻辑,添加名称验证
|
||||
- `Presentation.__init__` 方法(610行):移除默认 templates_dir 参数
|
||||
- `parse_args` 函数(756行):添加 `--template-dir` 参数定义
|
||||
- `main` 函数(775行):传递 template_dir 参数给 Presentation
|
||||
|
||||
**用户影响**:
|
||||
- **破坏性变更**: 现有使用模板的用户必须在命令行添加 `--template-dir` 参数
|
||||
- 不使用模板的用户不受影响
|
||||
- 脚本可以在任何位置运行,不再依赖特定的目录结构
|
||||
|
||||
**示例**:
|
||||
```bash
|
||||
# 之前(只能在项目根目录运行)
|
||||
uv run yaml2pptx.py presentation.yaml
|
||||
|
||||
# 之后(可以在任何位置运行,但使用模板时必须指定目录)
|
||||
uv run yaml2pptx.py presentation.yaml --template-dir ./templates
|
||||
uv run yaml2pptx.py presentation.yaml --template-dir /path/to/templates
|
||||
```
|
||||
Reference in New Issue
Block a user