Autor

Alejandro Alcalde

Data Scientist and Computer Scientist. Creator of this blog.

Más artículos de Alejandro Alcalde | Porfolio

Índice

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

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.

Categorías:Etiquetas:

Quizá también te interese leer...