Coloreado de sintaxis en MediaWiki
Thursday, July 3rd, 2008Para lograr colorear la sintaxis de las fuentes que incluyamos en nuestras páginas en Mediawiki, existe una extensión que facilita enormemente esta tarea. La extensión se llama SyntaxHighlight GeSHi.
Instalación
La extensión se encuentra en un repositorio de Subversion, por lo tanto necesitaremos un cliente Subversion para obtenerla. En caso de que no tengan algún cliente instalado, en este post explico cómo instalarlo.
Luego hay que ir a la carpeta extension, la cual se encuentra dentro del directorio donde tengamos instalado el wiki. Podríamos suponer que se encuentra en /var/www/wiki/extension/.
Dentro de la carpeta extension, utilizaremos el cliente subversión para bajar la extensión. Ejecutando el siguiente comando:
# svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi
Adicionalmente necesitaremos bajar actual de GeSHi, la cual también se encuentra disponible en un repositorio Subversion. La extensión sería recomendado bajarla dentro de la carpeta extension/SyntaxHighlight_GeSHi/.
# cd SyntaxHighlight_GeSHi
# svn co http://geshi.svn.sourceforge.net/svnroot/geshi/branches/RELEASE_1_0_X_STABLE/geshi-1.0.X/src/ geshi
Habilitar la extensión
Ahora indicaremos al wiki sobre la nueva extensión, para esto debemos editar el archivo LocalSettings.php, que se debería encontrar en la raíz del directorio del wiki (ej. /var/www/wiki/). La edición consiste en agregar estas dos líneas al final del archivo.
require_once("extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
require_once( '/var/www/wiki/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php' );
Nota: En el caso del segundo require_once, es necesario que especifiquen la ruta en donde se localiza geshi. De acuerdo a este ejemplo, la ruta que especifico es correcta, pero no podría ser en su caso.
Verificación de la instalación
Para verificar que realmente tenemos la extensión funcionando, podemos revisar la página Especial:Version (deben ser administradores del wiki para poder ver ésta página), en donde debería describir (dentro de otras cosas) las extensiones instaladas. Pueden ver la imagen de como luciría la descripción de la extensión
Uso
Hay que utilizar la etiqueta source y a través de la propiedad lang especificamos el tipo de fuente que vamos a escribir. Acá dejo un pequeño ejemplo como se vería un fragmento de XHTML.
<source lang="xml">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XHTML 1.0 un ejemplo</title>
</head>
<body>
<p>Esto es una muestra de la extensión<p>
</body>
</html>
</source>
El código anterior se vería como la siguiente imagen.
Los parámetros que se le pueden pasar a la etiqueta source son los siguientes:
- lang
- Define el lenguaje
- line
- Habilita la numeración de lineas en el código.
- start
- Número con que comenzará a numerar las líneas.
- enclose
- Coloreado especial para etiquetas que envuelven el código.
- strict
En la tabla de abajo presento los valores que puede tomar la propiedad lang.
| lang | Lenguaje | |
|---|---|---|
| abap | ABAP | |
| actionscript | ActionScrip | |
| ada | Ada | |
| apache | Apache Log | |
| applescript | AppleScript | |
| asm | ASM | |
| asp | Active Server Pages (ASP) | |
| autoit | AutoIt | |
| bash | Bash | |
| basic4gl | Basic4GL | |
| blitzbasic | Blitz BASIC | |
| bnf | Backus-Naur Form | |
| c | C | |
| c_mac | C (Mac) | |
| caddcl | AutoCAD DCL | |
| cadlisp | AutoLISP | |
| cfdg | CFDG | |
| cfm | ColdFusion | |
| cpp-qt | C++ (Qt toolkit) | |
| cpp | C++ | |
| csharp | C# | |
| css | Cascading Style Sheets (CSS) | |
| d | D | |
| delphi | Delphi | |
| diff | Diff | |
| div | DIV | |
| dos | DOS batch file | |
| dot | DOT | |
| eiffel | Eiffel | |
| fortran | Fortran | |
| freebasic | FreeBASIC | |
| genero | Genero | |
| gml | Game Maker Language (GML) | |
| groovy | Groovy | |
| haskell | Haskell | |
| html4strict | HTML | |
| idl | Uno IDL | |
| ini | INI | |
| inno | Inno | |
| io | Io | |
| java | Java | |
| java5 | Java(TM) 2 Platform Standard Edition 5.0 | |
| javascript | JavaScript | |
| latex | LaTeX | |
| lisp | Lisp | |
| lua | Lua | |
| m68k | Motorola 68000 Assembler | |
| matlab | MATLAB M | |
| mirc | mIRC scripting language | |
| mpasm | Microchip Assembler | |
| mysql | MySQL | |
| nsis | Nullsoft Scriptable Install System (NSIS) | |
| objc | Objective-C | |
| ocaml-brief | OCaml | |
| ocaml | Ocaml | |
| oobas | OpenOffice.org Basic | |
| oracle8 | Oracle 8 SQL | |
| pascal | Pascal | |
| per | per | |
| perl | Perl | |
| php-brief | PHP | |
| php | PHP | |
| plsql | PL/SQL | |
| python | Python | |
| qbasic | QBasic/QuickBASIC | |
| rails | Rails | |
| reg | Windows Registry | |
| robots | robots.txt | |
| ruby | Ruby | |
| sas | SAS | |
| scheme | Scheme | |
| sdlbasic | SdlBasic | |
| smalltalk | Smaltalk | |
| smarty | Smarty | |
| sql | SQL | |
| tcl | Tcl | |
| text | Plain text | |
| thinbasic | thinBasic | |
| tsql | Transact-SQL | |
| vb | Visual Basic | |
| vbnet | Visual Basic .NET | |
| vhdl | VHDL | |
| visualfoxpro | Visual FoxPro | |
| winbatch | WinBatch | |
| xml | XML | |
| xpp | X++ | |
| z80 | ZILOG >80 Assembler |
Bibliografía
- Página de la extensión.[mediawiki.org]
- Documentación de SyntaxHighlight GeSHi.[qbnz.com]

