Add tools/build_content.py: renders every content/ entry into its blog / news / event detail page by self-templating the page's own chrome and replacing only content-derived regions (title, article header, hero, body, and — for new pages only — the scrollspy). Faithful reproduction, proven against the live site: - body_format: html fragments injected verbatim, so guide-boxes, inline figures and event galleries render unchanged. - scrollspy sidebars are preserved (labels are hand-curated, shorter than the H2s); only generated when a page has none. - <title> suffix derived per page, so EN/SI " - MSOS", MK " - МСОС", and suffix-less event titles all reproduce exactly. - hero /images/… rewritten to the page's ../../../ depth. - ASCII-only console output (no cp1252 crash on Windows/CI). tools/tests/test_build_content.py: 8 characterization tests; the core one renders all 51 pages and asserts each is semantically equivalent (whitespace/attr-order-insensitive) to the current page — the R5 no-regression guarantee. Does NOT overwrite the committed pages; whether generated pages are committed vs built fresh in CI is decided in U4/U5. Run: python tools/build_content.py --check # verify equivalence python tools/build_content.py --write # emit pages (for U4) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .gitea/workflows | ||
| assistant | ||
| content | ||
| css | ||
| docs | ||
| en | ||
| images | ||
| links-for-bots | ||
| mk | ||
| si | ||
| templates | ||
| tools | ||
| .gitignore | ||
| .htaccess | ||
| 404.html | ||
| README.md | ||
| apple-touch-icon.png | ||
| assistant.css | ||
| assistant.js | ||
| blog-filter.js | ||
| consent.js | ||
| export_code.sh | ||
| favicon-96x96.png | ||
| favicon.ico | ||
| favicon.svg | ||
| filter-search.js | ||
| guide-feedback.js | ||
| llms.txt | ||
| main.js | ||
| member-form.js | ||
| my-route.js | ||
| news-filter.js | ||
| optimize_images.py | ||
| robots.txt | ||
| site.webmanifest | ||
| sitemap.xml | ||
| student-guide.js | ||
| style.css | ||
| update_html.py | ||
| web-app-manifest-192x192.png | ||
| web-app-manifest-512x512.png | ||
README.md
msos spletna stran