samedi 10 janvier 2009
Jeudi, j'ai introduit la possibilité d'ajouter par JavaScript de la coloration syntaxique aux codes sources publiés en exemple. Aujourd'hui, j'aborderai le même sujet mais cette fois en utilisant la librairie PHP GeSHi - Generic Syntax Highlighter.
Contrairement à la librairie JavaScript dont j'ai parlé, GeSHi nécessite une seule dépendance : rouler sur un serveur PHP (c'est d'ailleurs la raison pour laquelle je n'ai pas pu l'utiliser sur Blogger). Par ailleurs, GeSHi étend sa reconnaissance syntaxique à plus d'une centaine de langages de programmation.
Pour l'utiliser, c'est assez simple :
- télécharger l'archive (zip, tar.gz ou tar.bz2)
- la décompresser
- dans le répertoire principal, on trouvera 3 sous-dossiers : contrib, docs, geshi et le fichier geshi.php. Sur le serveur de production, les répertoires contrib et docs ne sont pas nécessaires
- quand viendra le temps d'utiliser la librairie dans notre code source PHP, on devra inclure le fichier geshi.php (dans mon cas, j'ai placé GeSHi dans le répertoire includes où j'y mets toutes mes librairies) :
require_once('/includes/GeSHi/geshi.php'); - quant au répertoire geshi (/includes/GeSHi/geshi/), il contient un fichier pour chaque langage à traiter. Les fichiers de langue seront inclus automatiquement par le script principal, geshi.php lors de l'instanciation de l'objet
- pour colorer un code source :
$source = 'C'est aussi simple que ça.
$max = 10;
$find = 7;
for ( $i=1; $i<$max; $i++ ){
if ($i == $find) {
echo "Value $i found";
}
}';
$geshi = new GeSHi($source, 'php');
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 2);
$geshi->start_line_numbers_at(1);
$geshi->set_line_style('background:#f2f1ed;', 'background:#ffffff;');
$geshi->set_case_keywords(GESHI_CAPS_LOWER);
// afficher la source
echo $geshi->parse_code();
Voici le résultat :
À noter que Wikipedia, basé sur l'application MediaWiki, utilisent l'extension SyntaxHighlight GeSHi pour procéder à la coloration syntaxique.
Dans leur cas, il faut utiliser la syntaxe suivante, où l'attribut lang représente le langage de programmation à traiter :
<source lang="php">
code source...
</source>
Bien présenter des fichiers sources en les colorisant les rend plus lisibles et plus attractifs. Rien de plus facile avec GeSHi et un peu de code en PHP.
Toutes les explications sont sur ce site :
http://www.frasq.org/fr/coloration-syntaxique-des-fichiers-sources