Regularium expresionum… o algo así.

Thursday 10 de May de 2007

(Se supone que sea “De Expresiones regulares” en latín… )

El otro día posteé diciendo que el CSS quedó un asco, y me quedé pensando en eso. Se me ocurrió una forma: usar alguna mezcla de sed y awk para organizar y agrupar los elementos… pero no tengo ni idea de cómo se usa awk.

Después de un rato se me ocurrió una forma (y más de un linuxero experto me va a querer pegar por usar algo tan feo, pero anda): primero pongo todo en una línea, y después se resuelve fácil lo demás con expresiones regulares.

El problema empezó con la primera linea: sed 's/\n//g' no hacía lo que esperaba caso. Unos minutos de búsqueda me llevaron a una forma que sí sirvió: sed ':a; $!N; s/\n//; ta'. (:a crea una nueva etiqueta, la expresión junta 2 líneas, y ta hace que se repita mientras haya habido un cambio.)

Después, sacamos los comentarios (por un comando más adelante se vuelven inútiles igual): sed 's/\/\*.*?\*\///g'.

Ahora viene lo interesante: primero separamos los grupos de comas (ejemplo p, a {border-bottom: 1px solid red;} por p {border-bottom: 1px solid red;} a {border-bottom: 1px solid red;}): sed ':a; s/\([^,]*\), *\([^{}]*\)\({[^}]*}\)/\1 \3 \2 \3/; ta’. (Esto probablemente agrande el archivo bastante, pero esto no es para comprimirlo, sino para editarlo; hay páginas con compresores que están muy buenas, si se necesita ahorrar ancho de banda.)

Ahora hay que agrupar los estilos que modifiquen las mismas etiquetas; quizá hay una mejor solución con awk, pero así anda: primero ponemos un estilo por línea: sed 's/}/}\n/g', y los ordenamos con sort.

Haciendo esto ví que había 3 descripciones distintas de margin para un mismo elemento…

Y… bueno, ahora se puede manejar más fácil;

Para indentar más cómodamente, podemos poner sed 's/\([{};]\)/\1\n’, y trabajamos cómodos; también podríamos agrupar los elementos antes, con una expresión más… ¿Qué tal?

Me pasé un par de noches hasta bien tarde jugando con eso… creo que tengo que agregar a la lista de “Cómo darte cuenta que sos un geek” “Pasarse toda la noche jugando con la consola y archivos de texto, y divertirte”.

3 Comentarios a “Regularium expresionum… o algo así.”

  1. Italo dijo:

    Wednesday 30 de May de 2007, 4:42 pm

    Parecen complicadas esas expresiones :-)

    Me preguntaba si no inagurarias un Blogroll e intercambiamos enlaces ? ;)
    Mi blog es de tecnologia y a veces tambien hablo de programacion ….
    En fin…. es mas tecno.com

    Si te parece podriamos intercambiar enlaces…. asi que podes avisarme por correo a pbozzolo@gmail.com

    Salu2!

  2. Tordek dijo:

    Wednesday 30 de May de 2007, 11:17 pm

    Sólo parecen, al principio, pero después te das cuenta que es engañoso. Lo único es aprenderse los elementos y cómo relacionarlos.

  3. Tordek dijo:

    Wednesday 30 de May de 2007, 11:22 pm

    Ah, y, yo pienso que en un blogroll van los blogs que te gustan; si querés poner un link al mio, bienvenido seas, pero sólo voy a poner un link al tuyo si me gusta.

Comentá:

XHTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>