Coloreado de sintaxis en MediaWiki

Posteado: 03/07/2008 a las 01:45 por admin mediawiki
sintaxis coloreada, SyntaxHighlight GeSHi

Para 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

Página Especial:Version

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.

Sintaxis coloreada por la extensión SyntaxHighlight GeSHi en MediaWiki

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
abapABAP
actionscriptActionScrip
adaAda
apacheApache Log
applescriptAppleScript
asmASM
aspActive Server Pages (ASP)
autoitAutoIt
bashBash
basic4glBasic4GL
blitzbasicBlitz BASIC
bnfBackus-Naur Form
cC
c_macC (Mac)
caddclAutoCAD DCL
cadlispAutoLISP
cfdgCFDG
cfmColdFusion
cpp-qtC++ (Qt toolkit)
cppC++
csharpC#
cssCascading Style Sheets (CSS)
dD
delphiDelphi
diffDiff
divDIV
dosDOS batch file
dotDOT
eiffelEiffel
fortranFortran
freebasicFreeBASIC
generoGenero
gmlGame Maker Language (GML)
groovyGroovy
haskellHaskell
html4strictHTML
idlUno IDL
iniINI
innoInno
ioIo
javaJava
java5Java(TM) 2 Platform Standard Edition 5.0
javascriptJavaScript
latexLaTeX
lispLisp
luaLua
m68kMotorola 68000 Assembler
matlabMATLAB M
mircmIRC scripting language
mpasmMicrochip Assembler
mysqlMySQL
nsisNullsoft Scriptable Install System (NSIS)
objcObjective-C
ocaml-briefOCaml
ocamlOcaml
oobasOpenOffice.org Basic
oracle8Oracle 8 SQL
pascalPascal
perper
perlPerl
php-briefPHP
phpPHP
plsqlPL/SQL
pythonPython
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