Syntax highlighting para tu blog

He integrado GeSHi, una clase PHP para adornar un poco los fragmentos de código que voy publicando en el blog.

Me gusta porque el código está muy claro y es fácil de cambiar par adaptarlo a nuestras necesidades, que para eso es Software Libre (hasta le he mandado un parche al autor para la sintaxis de Ruby en el ratillo que he estado trasteando :P).

La única pega es que si le pasas como fuente una cadena para que le de formato, debes indicarle el lenguaje que es para que lo coloree de la forma adecuada. Lo he solucionado añadiendo un estilo especial a los tags pre.

Dicho estilo nunca llega a verse, es solo una marca que preproceso antes de mostrar la anotación:

código php
while(ereg("<pre style=\"lang-([^\"]*)\">([^<]*)</pre>", $cuerpo, $valores))
	$cuerpo=str_replace($valores[0],
		geshi_highlight(html_entity_decode($valores[2]),
			$valores[1], "[la path]/geshi", true), $cuerpo);

Sí, uso expresiones regulares ;).

La idea es detectar el patrón:

<pre style="lang-LENGUAJE">
Aquí viene el código fuente
</pre>

El código fuente y el LENGUAJE (php, javascript, c, ruby, etc) indicado se le pasan a GeSHi para reemplazar la ocurrencia con el código resultado. Fácil, ¿no?

No están todos los lenguajes (echo de menos el soporte para consola), pero sí hay una buena lista. Solo falta ser un poco creativo con CSS para darle el formato que queramos a la caja con el código y listo.


Publicidad

Aviso: Los siguientes comentarios pertenecen a las personas que los han enviado.
El administrador de este sitio web no es responsable de los mismos.

[comentarios] Hay 6 comentarios:

Gravatar
28/11/2005 12:57:39
Bash
por ceritium (IP: 84.122.114.*)
Comentario de ceritium
Yo la ultima vez que lo probé traia bash.
Gravatar
28/11/2005 13:06:05
BASH != consola
por Juanjo (IP: 192.168.0.*)
Comentario de Juanjo
El soporte para BASH no cubre las ejecuciones de comandos en consola, solo scripts.

Por ejemplo el prompt de root (#) lo toma como un comentario, y la salida de los programas no debería aparecer coloreada y sí lo hace.

He estado mirando de añadir yo el soporte, pero no he tenido tiempo.
Gravatar
28/11/2005 14:01:58
plugin para WP
por Pau Oliva (pof) (IP: 212.145.174.*)
Comentario de Pau Oliva (pof)
Genial!
Hay incluso un plugin para wordpress http://dev.wp-plugins.org/browser/geshi-syntax-colorer/ :)
Gravatar
29/11/2005 11:26:29
Colorido
por r0sk (IP: 217.130.44.*)
Comentario de r0sk
Un poco de colorido al código nunca viene mal, de todas formas (veo que pof también lo ha implementado), creo que queda mejor con fondos claros. Me gusta.
Gravatar
29/11/2005 17:45:18
Tiempo de CPU
por Saiyine (IP: 83.53.92.*)
Comentario de Saiyine
¿No os parece trabajo inutil que cada vez que se ejecute la página, se haga el syntax highlighting?
Gravatar
29/11/2005 18:12:17
Sobre tiempos
por Juanjo (IP: 192.168.0.*)
Comentario de Juanjo
La gente tiene un poco de obsesión con el tiempo de CPU recientemente... y sospecho que todo es debido a servicios de hosting sub-standard (¿PHP como CGI? Yo no lo pagaría).

No es inútil: da resaltado con color al código. Ahora, ya deberíamos valorar si tiene un consumo soportable, y que además merezca la pena para lo que se consigue. Probablemente se debería valorar por casa caso.

En el mío no veo una solución factible almacenar el código ya procesado en la base de datos (no podría modificarlo fácilmente), y (por ahora) no tengo problemas de CPU (una carga de 0.20 no parece mucha carga :D).

! Esta entrada no permite nuevos comentarios.

Los comentarios se bloquean automáticamente tras 15 días desde la publicación del artículo.

Si deseas comentar algo relacionado con el texto, puedes enviarme un e-mail.