Posts Tagged ‘SyntaxHighlight GeSHi’

Coloreado de sintaxis en MediaWiki

Thursday, July 3rd, 2008

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
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