"""Szablon widziany tak, jak zobaczy go przeglądarka — z wstawkami modułów. Szablony wspólne mają neutralne gniazda (`{% include "_dodatki_*" %}`), a treść wstawianą w gniazdo trzyma moduł. Testy strukturalne sprawdzają kolejność skryptów i obecność odsyłaczy, więc muszą patrzeć na CAŁOŚĆ — inaczej pilnowałyby połowy strony i przepuściłyby zamianę kolejności, która psuje działanie. """ from __future__ import annotations import pathlib import re APP = pathlib.Path(__file__).resolve().parents[1] / "app" GNIAZDO = re.compile(r'\{%\s*include\s*"(_dodatki_[\w-]+\.html)"[^%]*%\}') def zloz(nazwa: str) -> str: """Treść szablonu z wstawkami rozwiniętymi W MIEJSCU gniazda.""" tresc = (APP / "templates" / nazwa).read_text(encoding="utf-8") def wstaw(m: re.Match) -> str: plik = APP / "dodatki" / "templates" / m.group(1) return plik.read_text(encoding="utf-8") if plik.exists() else "" return GNIAZDO.sub(wstaw, tresc)