• 01:00 - 15.07.2008 vite fait >> reflexion

    Si tu n'es pas idéaliste à vingt ans, c'est que tu n'as pas de coeur. Si tu l'es toujours à trente, c'est que tu n'as…

  • 08:16 - 12.07.2008 vite fait >> reflexion

    Ne jamais montrer la verité à l'adversaire, sauf lorsqu'elle est en mesure de le détruire. ...

  • 17:33 - 07.07.2008 vite fait >> reflexion

    Try not ! do or do not, but don't try ... [yoda] ...

  • 03:28 - 11.06.2008 vite fait >> reflexion

    Faire du vélo sur une roue, ça s'appelle du mono-cycle ... mais comment ça s'appelle quand on perd la roue avant d'un bi-cycle ? ...

  • 04:00 - 16.04.2008 vite fait >> reflexion

    Ceux qui pensent qu'installer Linux est difficile n'ont jamais essayé de comprendre une femme ...

Accueil arrow Php / mysql
Geshi Version imprimable Suggérer par mail
27-07-2007

Étant un lecteur de PHP solutions, magazine bien foutu et qui est souvent très juste, je me suis laissé tenté par un petit gadget (enfin presque) ... la colorisation syntaxique sur une page web. Dans le numéro 22, je regarde donc l'utilisation par l'auteur de la librairie GESHI ... bon, il nous met un petit javascript sois disant en AJAX ... et la je me marre. Il ne sont pas mauvais les développeurs du magasine mais il mélange un peu.

Lorsqu'on regarde le code, on se rend compte que le dis développeur prépare les deux modes d'affichages... au passage, c'est soi disant pour faire du copier/coller, mais quand je copie/colle un code "colorisé" dans un bon vieux éditeur texte SCITE par exemple :), y'a pas de souci alors je sais pas trop pourquoi ...mais bon, peut être que dans WORD(c) ? Donc, je rappelle que ajax est une requête au serveur en arrière plan, et pas un simple switcher de div en javascript... et que cela sers à afficher plus vite ... parce que sur 3000 ligne de code, je me demande la performance du dis code ...

Bon, bref je suis un râleur, mais cet article m'a au moins permis de découvrir cette fabuleuse (pour ce qu'elle fais) lib qu'est geshi. En plus d'implémenter un event.observe en javascript ... je ne critique pas la technique mais la méthode. Je vous soumet ma version d'un parseur de code ...

 

adaptation de nl
  1. /*
  2. l'auteur est au départ LAURENT ABBAL, je le felicite pour son travail mais je lui propose l'utilisation d'une fonction callback pour les performances...
  3. */
  4.  
  5. //appel de la fonction sur le $texte qui contient le code source.
  6.     return  preg_replace_callback("|<codesource>(.*?)<\/codesource>|si",'colorize',$texte);
  7.  
  8. //fonction de callback
  9. function colorize($regs){
  10.     $code = $regs[1];
  11.     include_once("commun/geshi/geshi.php");
  12.     $language = "php";
  13.     if (preg_match("((@language:)(.*?)(\n))",$code,$match)){
  14.         $language = trim($match[2]);
  15.         $code = str_replace($match[0],"",$code);
  16.     }
  17.    
  18.     $codesource_titre = "<span class='h1'>";
  19.     if (preg_match("((@title:)(.*?)(\n))",$code,$match)){
  20.         $codesource_titre .= $match[2];
  21.         $code = str_replace($match[0],"",$code);
  22.     }
  23.     $codesource_titre .= "</span><span class='h2'>[".$language."]</span>";
  24.    
  25.     $geshi = & new GeSHi(trim($code), $language);
  26.     $geshi->set_header_type(GESHI_HEADER_DIV);
  27.     $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS,2);
  28.     $geshi->set_overall_style('width:100%;padding:1px;margin:0px;color:#030303;border:1px solid #d0d0d0;background-color:#FCFCFC;font:12px Arial, Helvetica, sans-serif;',true);
  29.     $geshi->set_line_style('background:#FCFCFC;','background:#F0F0F0;');
  30.     $colore = $geshi->parse_code();
  31.    
  32.     return $codesource_titre.$colore;
  33. }

 

 
Photographies au hasard