osu! no analiza BBCode. Lo sella.
Por qué dos userpages casi idénticas pueden verse totalmente distintas: osu! sella los tags con expresiones regulares antes de que exista HTML, y HTMLPurifier repara lo que sale cruzado.
osu! no analiza tu BBCode. Lo sella.
Cuando guardas una userpage, osu! pasa el texto por una veintena de expresiones regulares, una por familia de tags. Cada pase busca la apertura y el cierre más cercanos y, cuando los encuentra, escribe un identificador:
Por eso dos páginas casi idénticas pueden verse completamente distintas. Una fue sellada; la otra no.
Un ejemplo medido
Escribe esto:
osu! publica
[b]Hola[/b] queda como [b:1]Hola[/b:1]. Lo que ningún pase reconoce no se ignora: se publica tal cual, con sus corchetes a la vista.La otra mitad de la historia
Al leer la página, solo los tags sellados se convierten en HTML. Ese HTML suele salir cruzado, y ahí entra HTMLPurifier: cierra los divs por posición, mueve los elementos de lista a la lista abierta más cercana y normaliza cada enlace.
Casi todo lo que osu! hace y parece raro es una de esas reparaciones, no una regla del lenguaje.
[centre][box=a]x[/centre]y[/box]x dentro del cuerpo de la caja y y fuera del cuerpo, pero dentro del contenedor. Ningún árbol balanceado produce eso: el [/centre] cerró el div más interno, sin importar qué tag lo había abierto.Quasar modela ese contenido varado y lo pinta donde osu! lo pinta. No es un parser distinto: es el mismo árbol con las decisiones de osu!.