# MD2HTML Koverzia Markdown do HTML, pouzitelne aj pre priame zobrazovanie Markdown suborov pomocou webservera. Zdrojove subory su v adresari `src/`: - `src/md2html.php`: vstupny bod konverzie Markdown do HTML. - `src/markdown.css`: styly vystupneho HTML. - `src/toc.js`: interaktivny obsah dokumentu bez externych JS zavislosti. Zavislosti sa instaluju cez `composer install` v koreni projektu do `vendor/`. Konfiguracia NGINX musi smerovat Markdown poziadavky na `src/md2html.php`. CSS sa nacitava z `//localhost/md2html/src/markdown.css`. ## Konfiguracia NGINX Do prislusneho bloku `server` pridaj: ```nginx location ~ \.md$ { fastcgi_pass 127.0.0.1:9999; fastcgi_param SCRIPT_FILENAME $document_root/md2html/src/md2html.php; include fastcgi_params; } ``` Poziadavky na subory s priponou `.md` sa tak spracuju cez `md2html/src/md2html.php`. Konfiguracia predpoklada projekt v adresari `md2html` pod `root` daneho servera (napr. `D:/www/md2html` pri `root D:/www;`) a PHP FastCGI na `127.0.0.1:9999`. Subor `fastcgi_params` musi byt dostupny v konfiguracii NGINX. Po uprave over konfiguraciu prikazom `nginx -t` a nacitaj ju prikazom `nginx -s reload`. ## Obsah dokumentu Tlacidlo v lavom hornom rohu otvara obsah vytvoreny z nadpisov H1 az H3. Na desktope panel uvolni miesto vedla dokumentu, na mobile sa zobrazi ako overlay. Zatvorit ho mozno tlacidlom, klavesom Escape alebo na mobile kliknutim mimo panelu. Panel ma vlastne scrollovanie a odkazy smeruju na unikatne ID nadpisov. Existujuce jednoznacne ID zostavaju zachovane. Stav sa uklada do localStorage pod klucom `md2html:toc:` + pathname + query string, bez URL fragmentu. Pri nedostupnom ulozisku ovladanie funguje dalej. Bez JavaScriptu zostava dokument citatelny, navigacne ovladanie je skryte. ## Testovanie Testy vyzaduju PHP s DOM rozsirenim, nainstalovane Composer zavislosti a Node.js s podporou `node:test` a `--test-isolation=none`. Nepouzivaju prehliadac ani dalsie balicky. V PowerShelli z korena projektu spusti: ```powershell php -l src/md2html.php node --check src/toc.js ./tests/run.ps1 ``` Testy overuju realny vystup Parsedownu a JS spravanie pomocou modelu DOM. Vizualne rozlozenie, skutocne scrollovanie a ovladanie v prehliadaci treba overit manualne na desktope aj mobile.