He estado un tiempo intentando instalar unos script hechos en javascript, para resaltar la sintaxis del codigo fuente que tengo en el blog, pero no conseguí instalarlo. Se llama SyntaxHighlighter, su web es esta.

Ya que no lo consegui me decidi a crear un pequeño script que por lo menos resalte las palabras reservadas del lengüaje. Lo hice para c++, en los proximos días intentaré hacer otro para bash y python.
Aqui esta el codigo:

#!/bin/bash

rutaCodigo=`zenity --file-selection --title="Select a File"`
case $? in
0)
  keyWords="continue float new signed try auto default for operator sizeof typedef break delete friend private static union case do goto protected struct unsigned catch double if public switch virtual char else inline register template void enum int return this volatile const extern long short throw while bool cout cin using namespace"

  sed "s/^#include/#include/" < "$rutaCodigo" > temp # coloreo el include
  sed "s/^#define/#define/" < temp > "$rutaCodigo" # coloreo el define

  for word in $keyWords
  do
    #Busco en el texto, cada palabra clave contenida en keyWords, y le añado la etiqueta span
    sed "s/b$wordb/$word/" < "$rutaCodigo" > temp
    cp temp $rutaCodigo
  done

  sed "s/^class /class/g" < "$rutaCodigo" > temp
  rm temp
  ;;
*)
  echo "No se seleciciono nada.";;
esac

Voy a explicar un poco el código:
La variable keyWords contiene las palabras claves de c++, menos “class”, que despues explicaré porque. En esta variable, las palabras han de estar separadas por un espacio, y todas en una misma linea, Para que el for coja palabra a palabra..

Las dos siguientes lineas

sed "s/^#include..... y sed "s/^#define...

buscan el patrón #define o #include, al principio de cada linea del texto, esto se indica con ^, y lo reemplaza con su estilo correspondiente, para formatear el texto.
Una vez entramos al for, se aplica básicamente el mismo procedimiento que para define e include, pero con cada palabra de la variable keyWords.

Por ultimo, hago lo mismo para la palabra, reservada class, el motivo por el que he dejado esta para el final, es porque la etiqueta contiene la palabra, class, y entonces el código no saldria bien, ya que al encontrarse esta palabra dentro de la etiqueta span, la sustituiría tambien.
Como Usarlo:

Lo primero que hice fue pensar de que color resaltar las palabras clave, las puse igual que en los ejemplos de conclase. El siguiente paso es crear una clase en el css del blog, de esta forma:

.prp { color: "#0a0"; font-weight: bold; }
.cpp { color: "#a40"; font-weight: bold; }

Una vez hecho esto, solo nos resta ejecutar el script, e introducir la ruta del codigo a formatear con este estilo.

Aqui podeis ver el resultado.

Si tenéis alguna duda, preguntad sin problema.

Saludos, espero que sea útil

Índice