My kemenworld…

To mock or not to mock…

WebSVN sin Enscript… (Pygments!!!)

Posted by kementeus en marzo 18, 2008

Aunque esta un poco fuera de lo habitual y se que tengo que continuar con mi serie sobre estructuras bien formadas, esto es algo que anoto para que no se me vuelva a olvidar. Como muchos saben suelo usar Subversion para el control de código fuente (o sea como SCM), aunque no es del todo mi agrado usar Subersion no me queda mucho por escoger en mi oficina, bueno, de eso no se trata el post.

Algunos quizás sepan que hay webapps para poder ver los repositorios de Subversion en el browser y así revisar nuestro repositorio, algunos de ellos son Trac (que es más que un simple repo browser), ViewCV y WebSVN (este último en PHP y usado por su simpleza para ver repositorios en SVN), aquí en la oficina usamos WebSVN para la colección de repositorios, pero si hay algo que irrita de WebSVN es su total incapacidad para resaltar texto en C# o VB.net.

WebSVN no resalta el código en estos lenguajes debido a que depende de Enscript para el resaltado de texto; enscript no posee archivos de sintaxis para C# o VB.net (realmente si tiene para C# pero es realmente malo, nisiquiera resalta palabras claves como namespace o partial). Recuerdo que en la oficina un día aburridos hicimos un paster en Python usando Pylons y para resaltar texto empleamos Pygments, una excelente framework de resaltado de código fuente. Pygments puede usar la línea de comandos para resaltar texto mediante pygmentize así que decidí reemplazar el segmento de código en WebSVN que resalta el código y que en vez de enscript usara pygmentize.

Revisando el código de WebSVN fue algo dificil, el código es algo enmarañado, algo así al estilo de programadores de PHP a quienes les encanta ver acumulaciones de if en el código fuente, bueno, por lo menos no mezclaban HTML con PHP, algo es algo. Luego de revisar el código di como cambiar el resaltado a pygments y resaltar código en VB.net y C#.

En su instalación de WebSVN agreguen soporte para C# y VB.net modificando el archivo include/setup.php, busquen la línea que reza:

$extEnscript = array = ( '.ada' => 'ada',

Y agreguen donde quieran (claro, antes que cierre la declaración del arreglo) lo siguiente:

'.cs' => 'csharp', '.vb' => 'vbnet',

Luego de eso cambiemos de enscript a pygmentize, primero instalemos Pygments, esto es un paso simple (tomando en cuenta que instalaron WebSVN), la documentación esta en el sitio de Pygments.

Ahora busquemos el archivo include/svnlook.php y lleguemos a la línea que reza lo siguiente:

$config->enscript." --language=html". ($l ? "--color --pretty-print=$l" : "")." -o - | ".

En mi instalación particular de WebSVN esta en la línea 584 aproximadamente. Ahora cambiemosla por algo mas simple: (ya sea comentando la anterior o borrandola)

"pygmentize -f html -l " . $l . " -O noclasses=1,style=colorful");

Listo, ahora WebSVN resaltará el código usando Pygments y no tendrá problemas con nuestro VB.net o C#, simple no?

Technorati Tags: ,,,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: