| Rubrika Php / mysql
Pridať komentár
Zvýrazňovanie syntaxe kódu – GeSHi
Zvýrazniť syntax nejakého zdrojového kódu zobrazovaného priamo na
stránke sa dá veľmi jednoducho, prostredníctvom natívnej PHP funkcie
highlight_string()
, avšak táto je čo sa nastavovania týka pomerne obmedzená. Nedá sa
nastaviť farebnosť zvýrazňovania, je problém s inými jazykmi ako PHP a
hlavne funkcia higlight_string() pri zvýrazňovaní pracuje
s XHTML nevalídnymi elementmi ako napríklad font.
Preto je dobré vedieť o niečom čo je na trochu vyššej úrovni ako je
štandardná highlight_string.
GeSHi – Generic Syntax Highlighter
GeSHi je opensource PHP trieda distribuovaná pod licenciou GNU, čiže je zdarma použiteľná so zachovaním informácie o autorstve a ľubovoľne modifikovateľná. GeSHi je v prvom rade syntax zvýrazňovač pre PHP, ale dokáže „obslúžiť“ veľké množstvo ďalších jazykov (dokopy ich je 72, kompletný zoznam je na domovskej stránke http://qbnz.com/…er/index.php). Jej hlavná výhoda spočíva v používani CSS tried na farebné zvýrazňovanie syntaxe, z čoho pramení jednoduchá prispôsobiteľnosť (stačí upraviť konkrétne CSS triedy) a zároveň sa minimalizuje objem kódu. Okrem samotného zvýrazňovania GeSHi taktiež dokáže číslovať riadky kódu.
Nároky na systém – rýchlosť?
Napriek tomu, že GeSHi musí pri svojej práci parsovať veľké množstvo
kódu, je nečakane rýchly. Pri bežných krátkych kúskoch kódu, je čas
rozparsovania kódu nepostrehnuteľný. Približne 150 riadkový kód GeSHi
zvládne za cca 0,1 – 0,2 sekundy, 2400 riadkový súbor trval presne
10,881 sekúnd.
Naprek relatívnej rýchlsti neodporúčam GeSHi používať na on-the-fly
highlightovanie kódu pre každého návšetvníka stránky zvlášť, ale
uložiť prostredníctvom GeSHi vysvietený kód priamo do databázy a potom ho
z nej už len vyťahovať.
Použitie
Samotné použitie triedy v praxi je veľmi jednoduché, i keď možností nastavenia je viac než dosť. Uvádzam to najjednoduchšie demo, priamo z domovských stránok GeSHi.
<? include dirname(__FILE__) . '/geshi.php'; $source = 'echo "hello, world!"'; $language = 'php'; $path = 'geshi/'; $geshi = new GeSHi($source, $language, $path); echo $geshi->parse_code(); ?>
Existuje možnosť integrovať GeSHi napríklad aj do formátovacieho systému Texy!. O tom však niekedy nabudúce.
Demo
Kto by túžil vidieť použitie GeSHi v praxi, nech sa poobzerá po tomto blogu. Všetky zvýraznené kódy sú zvýrazňované prostredníctvom tejto triedy. Široké možnosti vyskúšania triedy sú aj na domovských stránkach, konkrétne priamo tu: http://qbnz.com/…ter/demo.php, kde si môžete vyskúšať zvýrazňovanie akéhokoľvek kódu s použitím rôznych nastavení.

naspäť
