10

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
  1. require_once 'geshi.php';
  1. function pretty_file($file, $language, $startline=0, $endline=0, $number=false) {
  2.     if (!$file) {
  3.         return false;
  4.     }
  5.  
  6.     $s=read_file($file, $startline, $endline);
  7.  
  8.     if (!$s) {
  9.         return false;
  10.     }
  11.  
  12.     if (!$language) {
  13.         return $s;
  14.     }
  15.  
  16.     $output = false;
  17.  
  18.     switch ($language) {
  19.         case 'plain':
  20.             $s = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $s);
  21.             $s = htmlentities($s, ENT_COMPAT, 'UTF-8');
  22.  
  23.             $output = '<pre class="plain">' . PHP_EOL . $s . '</pre>' . PHP_EOL;
  24.             break;
  25.         default:
  26.             $geshi = new GeSHi($s, $language);
  27.             $geshi->enable_classes(true);
  28.             $geshi->set_header_type(GESHI_HEADER_DIV);
  29.             if ($number) {
  30.                 $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
  31.                 $geshi->start_line_numbers_at($startline > 0 ? $startline : 1);
  32.             }
  33.             $geshi->enable_keyword_links(false);
  34.             $geshi->set_tab_width(4);
  35.  
  36. //          echo '<pre>' . PHP_EOL .$geshi->get_stylesheet( ). '</pre>' . PHP_EOL;
  37.  
  38.             $output = $geshi->parse_code();
  39.  
  40.             if ($geshi->error()) {
  41.                 return false;
  42.             }
  43.     }
  44.  
  45.     return $output;
  46. }

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
  1. function read_file($file, $startline=0, $endline=0) {
  2.     $lines = @file($file);
  3.  
  4.     if ($lines === false) {
  5.         return false;
  6.     }
  7.  
  8.     if ($startline or $endline) {
  9.         $offset=$startline ? $startline-1 : 0;
  10.  
  11.         if ($endline) {
  12.             $length=$startline ? $endline - $startline + 1 : $endline;
  13.             $lines = array_slice($lines, $offset, $length);
  14.         }
  15.         else {
  16.             $lines = array_slice($lines, $offset);
  17.         }
  18.     }
  19.  
  20.     $s=implode('', $lines);
  21.  
  22.     $s=rtrim($s);
  23.  
  24.     return $s;
  25. }
VOIR AUSSI

bbcode

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].