Včera v noci, poté, co jedna milá kamarádka odešla domů k rodičům (musí zítra do školy), jsem se náhodou dostal ve dvě hodiny ráno na web GeSHi. GeSHi je prima věc, barevná. GeSHi umí obarvit automaticky Vaše zdrojáky v actionscript, ada, apache, asm, asp, bash, c, caddcl, cadlisp, cpp, css, delphi, geshi, html4strict, java, javascript, lisp, lua, nsis, oobas, pascal, perl, php-brief, php, python, qbasic, sql, vb, visualfoxpro, xml.
A ona GeSHi nejenom barví, ale rovněž, pokud ji k tomu mírně přinutíte, udělá třeba pro PHP funkce automaticky odkazy na manuál PHP. Dokonalé. Stejně se dá přinutit i k odkazům na HTML či CSS.
Použití je potom triviálně jednoduché, místo <pre> zadáte <pre language>.
Napsal jsem si k tomu samozřejmě plugin pro BLOG:CMS, pod názvem NP_GeSHi, funguje dvěma způsoby, buď při ukládání článku (parse-and-save), nebo online (realtime), používám přitom tu nej-geniálnější funkci PHP, tedy preg_replace_callback.
include('geshi.php');
class NP_Geshi extends NucleusPlugin {
function parseString(&$content) {
$keys=array('body','more');
foreach ($keys as $key)
$content[$key] =
preg_replace_callback (
'/<pre\s(.*?)>(.*?)<\/pre>/si',
array(&$this,'replaceString'),
$content[$key] );
}
function replaceString($r){
global $DIR_PLUGINS;
$geshi = new GeSHi($r[2],$r[1],$DIR_PLUGINS."geshi/");
$geshi->enable_classes();
$geshi->set_header_type(GESHI_HEADER_PRE);
$geshi->set_overall_class('code');
$geshi->set_link_target($this->_linktarget);
return $geshi->parse_code();
}
} // NP_Geshi