[cpif] Operación de cerebro en al gestión de BBCode/HTML/Smileys, etc

Jesus Cea jcea at argo.es
Thu Jul 12 20:32:51 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Como todos sabéis, se dispone de BBCode/HTML/Smileys y otras
funcionalidades comparables desde hace unos días. Durante la
programación del servicio de "quoteo" de mensajes al responder, se
encontró un grave problema en la gestión de BBCode/HTML, que han hecho
que la funcionalidad de "quote", que ya está hecha, haya sido desactivada.

El problema parecía catastrófico, y Heimy ha propuesto un sistema
alternativo. Ha subido una "demo" al SVN, en el directorio "varios".

Esta mañana se me ha ocurrido una forma de salvar el código antiguo
modificando apenas 10 lineas, pero cuando he estado haciendo pruebas en
situaciones extremas me he dado cuenta de que los "parsers" antiguos
requieren cirugía un poco más profunda. Y puestos a meterles mano de
verdad, mejor dar cancha a Heimy para que implemente su propuesta,
aunque ello frene el desarrollo de CPIF unos días.

En concreto el problema de los parsers actuales es que para la cadena
"[url="pepe"]hola[/url]" devuelven algo como

(True,""),(False,"<a href="pepe">hola"),(True,""),(False,"</a>")

Lo que deberían devolver es:

(False,"<a href="pepe">),(True,"hola"),(False,"</a>")

La madre del cordero es que el parser BBCode actual devuelve el cuerpo
de un tag dentro del propio tag de inicio, no en un token separado.

Arreglarlo probablemente sea trivial para Álvaro, que escribió el código
original, pero yo no tengo ni tiempo ni ganas de meterle mano tan a
fondo, y Heimy está disponible y Álvaro no... :-).

La idea que "salva" el código viejo (si se solucionase ese otro bug) es
que podemos parsear los mensajes de los usuarios con los dos parsers
HTML/BBCode *a la vez*, y quedarnos con el que encuentre un tag primero.
Su salida (y aquí es donde ataca el nuevo bug) se vuelve a procesar otra
vez por ambos parsers, tomando siempre en cada paso el parser cuyo tag
se encuentre primero.

El código está escrito y probado, y funciona bien salvo por el segundo
bug (que requiere corregir el parser BBCODE). Se subió al SVN en la
versión 271. Se borró en la 272, pero ahí está disponible en el SVN...

Si Álvaro encuentra un rato estos días, puede echarle un vistazo tanto a
ese código como al bug del parser BBCode. Seguramente la solución es
trivial, pero yo tengo otras batallas que librar...

Si finalmente se cambian los parsers, habrá que probarlos de nuevo a
fondo, especialmente en lo que respecta a problemas de seguridad.

- --
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea at argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
jabber / xmpp:jcea at jabber.org         _/_/    _/_/          _/_/_/_/_/
                               _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQCVAwUBRpZz05lgi5GaxT1NAQI6nQQAgmwp2vteOD121Fhmm7H0FcAIA8PRohmC
Jp5b9MywA837rpt98n4jjQsAOR1Nc9hvKXA4O13GibmEJFwzp9KXltQaSFChcri5
B2kGD9qgAO1PkXApO/DGvp/agIK5H1Pz8FT+Z7UhD1ftiCdSQVkoCUntlrBPUqUS
D2YTLRg5y40=
=IKTl
-----END PGP SIGNATURE-----



More information about the cpif mailing list