Gépelj a kereséshez. Nyilakkal lépkedhetsz, Enter megnyit, Esc bezár.

Összes technológia

Sablonalapú dokumentumgenerálás

A tartalom (strukturált adat) és a megjelenés (sablon) szétválasztása, hogy egy build lépés egyetlen forrásból állítsa elő a dokumentum minden változatát.

Projektigény

Egy CV és egy motivációs levél két nyelven és több változatban, úgy, hogy a változatok ne térjenek el egymástól.

Technikai kérdés

Hogyan állíthat elő egy tartalmi forrás minden nyelvet és változatot úgy, hogy a hiányzó fordítás és a túl hosszú dokumentum automatikusan kiderüljön?

Validáció

Működő generátor két változatot épít két nyelven; tesztek fedik a feloldást és az escape-et, az ismételt build azonos PDF-et ad.

Döntés

A nyelv és a változat feloldása a renderelés előtt történik, a sablonokban nincs logika, felülírni csak engedélyezett kulcsokat lehet, a kimenetet a build ellenőrzi.

Feloldási sorrend: alapértelmezés, változat, dokumentumonkénti felülírás, parancssor.

Az escape a kimeneti formátumtól (LaTeX vagy HTML) függ, ezért a renderelés része, nem a tartalomé.

Megvalósítások nyelvenként

Python

A YAML-adatból Pythonban egyszerű kontextus készül, ezt Jinja2 rendereli LaTeX-be, a PDF-et pedig latexmk fordítja.

  • A Jinja2 delimiterei \VAR{}, \BLOCK{} és \#{} lettek, hogy ne ütközzenek a LaTeX kapcsos zárójeleivel.
  • Az escape a Jinja2 finalize hookjában fut, így minden kiírt érték escape-elődik; a már biztonságos szöveg jelölést kap, hogy ne legyen kétszeres escape.
  • A rögzített SOURCE_DATE_EPOCH miatt azonos tartalomból bájtra azonos PDF készül.

Ezek a projektek használják

Kapcsolódó kutatás