Si te gusta jugar con rails y nunca has probado hpricot (del siempre genial y bizarro whytheluckystiff) te lo recomiendo. En mi caso lo había probado un par de veces, pero para funciones muy básicas.
En este caso vamos a jugar con la opción que tiene para 'arreglar' inputs de html que vengan un poco escacharraillos ¿quién no se ha dejado un div sin cerrar? Pues esta gema nos va a ayudar a dejar el código limpito de verdad.
No descubro nada que no esté en la documentación, pero es que me ha parecido genial.
Cojamos el código a parsear, bien desde un archivo:
doc = Hpricot(open("tudocumento.html"))
Bien desde una variable:
doc = Hpricot(param[:mivariable])
Tenemos dos opciones. No toques mi código, sólo cierra lo que esté abierto:
doc = Hpricot(mivariable_o_documento) { |f| Hpricot f, :fixup_tags => true }
O bien cierra todo lo que esté abierto, y además convierte mi código en xhtml estricto:
doc = Hpricot(mivariable_o_documento) { |f| Hpricot f, :xhtml_strict => true }
Problemas, los hay. Cuando te enfrentas a un código (pegado desde word, por ejemplo) con 300 niveles de anidación no es capaz de decir más que 'too much stack levels'. Evidentemente no es el ejemplo más común, para código normal hecho por gente normal y con unos niveles de errores incluso algo bestia funciona.
Me queda comprobar cuánto consume realmente. Es mucho más ligero que otros parsers de html para rails, pero cuando da el 'stack levels' se come tu máquina y la del vecino. Imagino que se podrá controlar pero todavía no se como.
Ahora, para trabajos sencillo es ideal.


buscando-entre-la-nada-
24 feb 2007 | 05:47 PM
Eeee!! Muxas asias... la verdad no tenia ni idea d xq no podia colgar como dios manda la cancioncita, jeje... ya ta... con lo facil q era xé!
un beset!