prettyfile
pretty_file
SYNOPSIS
pretty_file($file, $language, $startline=0, $endline=0, $number=false)
DESCRIPTION
pretty_file
retourne tout le contenu du fichier $file
, ou une partie du fichier $file
de la ligne $startline
à la ligne $endline
, mis en valeur pour le langage informatique $language
ou false
en cas d'erreur.
Si $number
est à true
, les lignes sont numérotées.
CODE
- require_once 'geshi.php';
- function pretty_file($file, $language, $startline=0, $endline=0, $number=false) {
- if (!$file) {
- return false;
- }
- $s=read_file($file, $startline, $endline);
- if (!$s) {
- return false;
- }
- if (!$language) {
- return $s;
- }
- $output = false;
- switch ($language) {
- case 'plain':
- $s = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $s);
- $s = htmlentities($s, ENT_COMPAT, 'UTF-8');
- $output = '<pre class="plain">' . PHP_EOL . $s . '</pre>' . PHP_EOL;
- break;
- default:
- $geshi = new GeSHi($s, $language);
- $geshi->enable_classes(true);
- $geshi->set_header_type(GESHI_HEADER_DIV);
- if ($number) {
- $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
- $geshi->start_line_numbers_at($startline > 0 ? $startline : 1);
- }
- $geshi->enable_keyword_links(false);
- $geshi->set_tab_width(4);
- // echo '<pre>' . PHP_EOL .$geshi->get_stylesheet( ). '</pre>' . PHP_EOL;
- $output = $geshi->parse_code();
- if ($geshi->error()) {
- return false;
- }
- }
- return $output;
- }
Le HTML retourné par pretty_file
ne contient pas de CSS.
Pour correctement appliquer le style de votre page, demandez à GeSHi de générer la feuille de style en activant la ligne 74 du code et enregistrez-la dans un fichier dans le dossier css/geshi.
EXEMPLE
Pour ajouter le CSS du langage Python, appelez pretty_file
avec comme premier argument un fichier hello.py et 'python'
comme second argument.
Copiez dans la sortie, avant le code en HTML, le CSS pour la classe .python
, et enregistrez toutes les lignes dans le fichier css/geshi/python.css.
read_file
SYNOPSIS
read_file($file, $startline=0, $endline=0)
DESCRIPTION
read_file
retourne tout le contenu du fichier $file
, ou une partie du fichier $file
de la ligne $startline
à la ligne $endline
, dans une chaîne de caractères ou false
en cas d'erreur.
CODE
- function read_file($file, $startline=0, $endline=0) {
- $lines = @file($file);
- if ($lines === false) {
- return false;
- }
- if ($startline or $endline) {
- $offset=$startline ? $startline-1 : 0;
- if ($endline) {
- $length=$startline ? $endline - $startline + 1 : $endline;
- $lines = array_slice($lines, $offset, $length);
- }
- else {
- $lines = array_slice($lines, $offset);
- }
- }
- $s=implode('', $lines);
- $s=rtrim($s);
- return $s;
- }
Commentaires