# 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.