Parseo CSS

Agregar a favoritos

8 Comentarios

Posteado hace 939 días en:

¿Expresiones o tokens?

Ando buscando información y scripts para el parseo de hojas de estilos, con el fin de depurar mi parser y aproximarlo un poco al SAC.
Mi parser basado en expresiones regulares se desmorona cuando el código es demasiado complejo, y provoca que los bloques no se reconozcan bien.

He estado mirando scripts, algunos para el highlight del código y me doy cuenta que usan tokens, es decir, cuando encuentran un token de apertura (un carácter) hacen un bucle hasta que no den con el token de cierre.
Esto consume más recursos que mis expresiones regulares, pero es muy efectivo.

Pongamos un ejemplo:


.miclass {
js: "function hello() { alert("hello"); }";
}

Supongamos que quiero añadir código JS, con mi parser al encontrarse con el corchete de cierre }" lo interpretaría como fin de bloque, pero con tokens no pararía hasta llegar al final.

Que es lo mas aconsejable? potenciar las expresiones regulares, o tirar por la otra practica?.


  • avatar

    test#1 hace 938 días

    Los compiladores usan tokens, asi que… 8)

  • avatar

    DrSlump#2 hace 938 días

    Hace unos meses estuve trabajando en un parser para CSS que implementara las interfaces SAC.

    El proyecto está disponible en
    http://svn.netxusfoundries.com/tracs/macrocss
    y el repositorio svn en
    http://svn.netxusfoundries.com/public/macrocss

    El código es LGPL así que no hay problema si quieres usarlo.

    ciao, ivan

  • avatar

    Icebeat#3 hace 937 días

    Ohhh, que pasada tio, muuchas gracias por el aporte, ahora eso si, no entiendo como usarla y como acceder al arbol.
    Vaya pasote.

  • avatar

    DrSlump#4 hace 937 días

    La recomendación SAC define como crear un parser basado en eventos, esto significa que no hay arbol generado al estilo DOM, se ha intentado y que yo sepa nadie ha conseguido hacer una implementación del DOM para CSS que funcione. Es como si quisieras representar un CSS en XML, simplemente no se puede.
    Ahora bien, definiendo tu propio DocumentHandler (definido en Handler.php) puedes almacenar internamente el CSS como mejor te parezca. El DocumentHandler define unos eventos que son llamados por el parser, a partir de ahí, con un poco de introspección para los selectores y las condiciones puedes hacer maravillas. En test/cssdom.php hay un mockup de una especie de DOM para CSS pero no está implementado y también faltaría crear un DocumentHandler para él.
    De todas maneras, ten en cuenta que el código está lleno de ‘echos’ para depurarlo, así que antes de usarlo en producción habría que limpiarlo un poco.
    Ahora mismo estoy muy liado con temas del curro, pero creo que si tuvieras el tiempo para coordinar un pequenyo grupo de trabajo (en SF mismo) podriamos crear algo muy interesante.
    Empece a trabajar en el parser después de leer uno de tus posts hablando de CSSing, por que me parecía el escalón que falta entre CSS y XSL para separar la programación del disenyo y que al mismo tiempo los disenyadores se sientan comodos. Por desgracia mi tiempo ‘libre’ es cada vez más escaso, así si puedo ayudar en tu implementación será mejor que dejar pasar la idea.

    ciao,
    ivan

  • avatar

    Icebeat#5 hace 937 días

    Muchas gracias por la aclaración ivan, la verdad es que el codigo esta de puta madre.
    Bueno yo la verdad si que veo el CSS en forma de XML, igual que definir aperturas y cierres para los elementos CSS.
    Tengo previsto para la nueva versión implementar ciertas mejoras, entre las que tu parser me solucionaran la vida, necesito una forma de hacer la hoja de estilos dinamica pero sin que se tenga que recompilar cada vez.Tener ciertos niveles de dinamismo, dejando partes ya compiladas y otras para procesarlas.
    Desde mi punto de vista como diseñador veo CSSing como una buena alternativa, es como trabajar con CSS pero potenciado con mas constantes y propiedades.
    Me encantaria saber mas sobre el parser, si quieres puedes agregarme al msn y charlamos un poco :).

  • avatar

    Alfonso#6 hace 937 días

    asi me gusta… seguid retroalimentandoos… jua jua jua jua…

  • avatar

    Elix#7 hace 847 días

    Saludos primero que nada y tambien felicitaciones por tu blog. Muy interesante todo lo que nos compartes.

    El motivo aparte de la felicitacion, es si conoces algo de información, con respecto a la usabilidad, comodidad y accesibilidad de usar 2 o 3 columnas.
    Actualmente mi sitio tiene 3 columnas pero cada que navego más encuentro que la mayoria de los blogs “de exito” por asi decirlo y los demas sitios trabajan a 2 columnas.
    Asi que me ha entrado la espinita y me gustaria intentar algo a 2 columnas o 3, pero que no sea tan inflexible como el que ahora tengo. Esto ultimo debido a que aun tengo drupal 4.6 pero pienso actualizarlo al 4.7 que ya me permite mayor flexibilidad con el manejo de las columnas.
    Me agradan el diseño de estos sitios.

    www.alt1040.com
    www.olganza.com
    http://www.moccablog.com/

    Todos ellos con WP, pero no pienso dejar Drupal :D

    Gracias de antemano.

    Eliud

  • avatar

    IceBeat#8 hace 846 días

    Pues veo que has actualizao muy rapido jeje, porque lo tienes a 2 columnas.
    Yo veo bien el formato que has utilizado, aunque sea fijo cumple su función.
    Un 3 columnas en un blog es sobrecargar demasiado la información, todos sabemos que lo importante son los articulos y que un lector habitual no suele hacer mucho hincapie en investigar y darse una vuelta por la pagina (si ta buscando algo eso es otra cosa).