Refactor yaml2pptx.py from a 1,245-line monolithic script into a modular architecture with clear separation of concerns. The entry point is now 127 lines, with business logic distributed across focused modules. Architecture: - core/: Domain models (elements, template, presentation) - loaders/: YAML loading and validation - renderers/: PPTX and HTML rendering - preview/: Flask preview server - utils.py: Shared utilities Key improvements: - Element abstraction layer using dataclass with validation - Renderer logic built into generator classes - Single-direction dependencies (no circular imports) - Each module 150-300 lines for better readability - Backward compatible CLI interface Documentation: - README.md: User-facing usage guide - README_DEV.md: Developer documentation OpenSpec: - Archive refactor-yaml2pptx-modular change (63/70 tasks complete) - Sync 5 delta specs to main specs (2 new + 3 updated)
266 lines
3.2 KiB
Plaintext
266 lines
3.2 KiB
Plaintext
# ============================================
|
|
# Operating Systems
|
|
# ============================================
|
|
|
|
# macOS
|
|
.DS_Store
|
|
.AppleDouble
|
|
.LSOverride
|
|
._*
|
|
.DocumentRevisions-V100
|
|
.fseventsd
|
|
.Spotlight-V100
|
|
.TemporaryItems
|
|
.Trashes
|
|
.VolumeIcon.icns
|
|
.com.apple.timemachine.donotpresent
|
|
.com.apple.timemachine.supported
|
|
AppleDB
|
|
AppleDesktop
|
|
Network Trash Folder
|
|
Temporary Items
|
|
.apdisk
|
|
|
|
# Windows
|
|
Thumbs.db
|
|
Thumbs.db:encryptable
|
|
ehthumbs.db
|
|
ehthumbs_vista.db
|
|
*.stackdump
|
|
[Dd]esktop.ini
|
|
$RECYCLE.BIN/
|
|
*.lnk
|
|
*.url
|
|
*.cab
|
|
*.msi
|
|
*.msix
|
|
*.msm
|
|
*.msp
|
|
*.msixbundle
|
|
*.lnk
|
|
*.url
|
|
|
|
# Linux
|
|
*~
|
|
.fuse_hidden*
|
|
.directory
|
|
.Trash-*
|
|
.nfs*
|
|
|
|
# ============================================
|
|
# IDEs & Editors
|
|
# ============================================
|
|
|
|
# VSCode
|
|
.vscode/
|
|
*.code-workspace
|
|
.history/
|
|
|
|
# JetBrains IDEs (IntelliJ, PyCharm, WebStorm, CLion, etc.)
|
|
.idea/
|
|
*.iml
|
|
*.ipr
|
|
*.iws
|
|
.idea_modules/
|
|
out/
|
|
*.nav
|
|
.idea/**
|
|
|
|
# Eclipse
|
|
.project
|
|
.classpath
|
|
.settings/
|
|
.metadata
|
|
.recommenders
|
|
bin/
|
|
tmp/
|
|
*.tmp
|
|
*.bak
|
|
*.swp
|
|
*~.nib
|
|
*.tmproj
|
|
|
|
# Sublime Text
|
|
*.sublime-workspace
|
|
*.sublime-project
|
|
|
|
# Vim
|
|
*.swp
|
|
*.swo
|
|
*.swn
|
|
*~
|
|
.[!.]*.sw[a-z]
|
|
.netrwhist
|
|
|
|
# Emacs
|
|
*~
|
|
\#*\#
|
|
/.emacs.desktop
|
|
/.emacs.desktop.lock
|
|
auto-save-list
|
|
tramp
|
|
.\#*
|
|
|
|
# ============================================
|
|
# Python
|
|
# ============================================
|
|
|
|
# Byte-compiled / optimized / DLL files
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
|
|
# Distribution / packaging
|
|
.Python
|
|
build/
|
|
develop-eggs/
|
|
dist/
|
|
downloads/
|
|
eggs/
|
|
.eggs/
|
|
lib/
|
|
lib64/
|
|
parts/
|
|
sdist/
|
|
var/
|
|
wheels/
|
|
share/python-wheels/
|
|
*.egg-info/
|
|
.installed.cfg
|
|
*.egg
|
|
MANIFEST
|
|
|
|
# PyInstaller
|
|
*.manifest
|
|
*.spec
|
|
|
|
# Unit test / coverage reports
|
|
htmlcov/
|
|
.tox/
|
|
.nox/
|
|
.coverage
|
|
.coverage.*
|
|
.cache
|
|
nosetests.xml
|
|
coverage.xml
|
|
*.cover
|
|
*.py,cover
|
|
.hypothesis/
|
|
.pytest_cache/
|
|
|
|
# Virtual environments
|
|
venv/
|
|
env/
|
|
ENV/
|
|
env.bak/
|
|
venv.bak/
|
|
.venv/
|
|
.virtualenv/
|
|
pipenv/
|
|
.virtualenvs/
|
|
|
|
# Jupyter Notebook
|
|
.ipynb_checkpoints
|
|
*.ipynb
|
|
|
|
# IPython
|
|
profile_default/
|
|
ipython_config.py
|
|
|
|
# pyenv
|
|
.python-version
|
|
|
|
# pipenv
|
|
Pipfile.lock
|
|
|
|
# PEP 582
|
|
__pypackages__/
|
|
|
|
# Cython debug symbols
|
|
cython_debug/
|
|
|
|
# ============================================
|
|
# Project Specific
|
|
# ============================================
|
|
|
|
# Generated presentations
|
|
presentations/*.pptx
|
|
!presentations/.gitkeep
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# Database
|
|
*.db
|
|
*.sqlite
|
|
*.sqlite3
|
|
|
|
# Temporary files
|
|
*.tmp
|
|
*.temp
|
|
*.bak
|
|
*.cache
|
|
|
|
# ============================================
|
|
# Environment & Secrets
|
|
# ============================================
|
|
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
.env.local
|
|
.env.development.local
|
|
.env.test.local
|
|
.env.production.local
|
|
*.pem
|
|
*.key
|
|
*.cert
|
|
secrets/
|
|
credentials/
|
|
|
|
# ============================================
|
|
# Build & Package
|
|
# ============================================
|
|
|
|
# Node modules (if any)
|
|
node_modules/
|
|
|
|
# npm
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
package-lock.json
|
|
yarn.lock
|
|
pnpm-lock.yaml
|
|
|
|
# ============================================
|
|
# Misc
|
|
# ============================================
|
|
|
|
# Archives
|
|
*.zip
|
|
*.tar
|
|
*.tar.gz
|
|
*.rar
|
|
*.7z
|
|
|
|
# Large files
|
|
*.iso
|
|
*.dmg
|
|
|
|
# OS generated files
|
|
.Spotlight-V100
|
|
.Trashes
|
|
|
|
# ============================================
|
|
# Keep important directories
|
|
# ============================================
|
|
|
|
# Uncomment to keep directory structure
|
|
# !templates/
|
|
# !examples/
|
|
# !assets/
|
|
|
|
temp |