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:
<?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.
Hay 6 comentarios
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.
Genial!
Hay incluso un plugin para wordpress http://dev.wp-plugins.org/browser/geshi-syntax-colorer/ :)
por Pau Oliva (pof), en 2005-11-28 14:01:58 ∞
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).
Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.
por ceritium, en 2005-11-28 12:57:39 ∞