Compartiendo código en tu blog con SyntaxHighlighter Evolved

Los que somos algo técnicos, solemos querer compartir algo de código de vez en cuando en nuestros blogs, y a veces resulta complicado compartirlo porque al meterlo dentro de nuestro blog, con los estilos existentes, acaba formándose una amalgama de contenido que no resulta claro a la hora de comprender lo que hace ese fragmento de código. Buscando una opción viable para compartir código de forma más efectiva, he dado con un plugin de WordPress: SyntaxHighlighter Evolved, que quizás algunos ya conocíais pero es nuevo para mi.

Ofrece muchas formas de visualización del código, ajustando el aspecto visual a cómo vemos el código en editores comunes, como Eclipse o Emacs, así como colorea la sintaxis del código en función del lenguaje. Os dejo algunos ejemplos de código para que veáis los resultados:

Código PHP, extraído de los ejemplos de uso de arrays en PHP:

[php]
<?php
function object_to_array($mixed) {
if(is_object($mixed)) $mixed = (array) $mixed;
if(is_array($mixed)) {
$new = array();
foreach($mixed as $key => $val) {
$key = preg_replace("/^\\0(.*)\\0/","",$key);
$new[$key] = object_to_array($val);
}
}
else $new = $mixed;
return $new;
}
?>
[/php]

Código java, ejemplificado con una función de números fibonacci extraído de Java Examples in a Nutshell:

[java]
public class Fibonacci {
public static void main(String[] args) {
int current, prev = 1, prevprev = 0;// Initialize some variables
for(int i = 0; i < 20; i++) { // Loop exactly 20 times
current = prev + prevprev; // Next number is sum of previous two
System.out.print(current + " "); // Print it out
prevprev = prev; // First previous becomes 2nd previous
prev = current; // And current number becomes previous
}
System.out.println(); // Terminate the line, and flush output
}
}
[/java]

Ejemplo de programación de threads en Python, extraído de Python Threads:

[python]
import os
import re
import time
import sys

lifeline = re.compile(r"(\d) received")
report = ("No response","Partial Response","Alive")

print time.ctime()

for host in range(60,70):
ip = "192.168.200."+str(host)
pingaling = os.popen("ping -q -c2 "+ip,"r")
print "Testing ",ip,
sys.stdout.flush()
while 1:
line = pingaling.readline()
if not line: break
igot = re.findall(lifeline,line)
if igot:
print report[int(igot[0])]

print time.ctime()
[/python]

P.D: Imagen de davestfu, licenciada bajo Creative Commons-NC-SA