13 agosto 2008

Colorear sintaxis en la web

Para los que publicamos fuentes de programas en la web, es interesante poder hacerlo con la sintaxis realzada en colores, de forma que resulte más legible para los usuarios de nuestro sitio web.

Hay varias formas de conseguirlo:

- Para los más atrevidos y/o los que publican pocos fuentes, está la opción de emplear un editor de texto que sea capaz de exportar a HTML con la sintaxis en colores, como es el caso de Notepad++, de PsPad y de Scite.

- Para los que tengan un sitio web en PHP y publiquen fuentes en PHP, se puede usar las propias tutinas de coloreado existentes en PHP: para una orden highlight_string(''); o para un fichero highlight_file("ejemplo.php")

- Para los que publiquen fuentes en lenguajes "habituales", como C++, Python o SQL, pueden probar a usar el paquete Text_Highlighter de la libería PEAR para PHP. Hay más detalles (en inglés) y algún ejemplo de su uso en: http://www.sitepoint.com/print/highlight-source-code-php

- Para los que necesiten algo todavía más versátil, porque usen lenguajes "hoy menos habituales", como Pascal o Basic, o porque quieran ser capaces de crearse sus propios esquemas de coloreado para otros lenguajes, puede merecer la pena echar un vistazo a Geshi:

http://qbnz.com/highlighter/index.php

Un ejemplo básico de su uso sería:

// Include the GeSHi library
include('geshi.php');

// Fuente (una cadena - incluso varias líneas), lenguaje y carpeta de datos de lenguajes
$fuente = 'echo "hola, mundo!";
// Comentario en segunda linea!!!!';
$lenguaje = 'php';
$carpeta = 'geshi/';

$geshi = new GeSHi($fuente, $lenguaje, $carpeta);

// y volcar el resultado
echo $geshi->parse_code();


Si queremos mostrar todo un fichero en vez de unas pocas líneas, usaríamos "file_get_contents":

$source = file_get_contents('ej001.pas');;


No parece difícil, ¿verdad?