alors si je saisis tout bien à NSMutableAttributedString, ce qui est fait c'est :
* détection des #chan (au passage, #abcdef n'est pas détecté par exemple, c'est stupide) :
#airplane# -> #airplane va obtenir un attribut XHTMLStart et un attribut XHTMLEnd
-> on aurait à l'affichage : <a href="
irc://irc.worldnet.net/#airplane">#airplane</a>#
mais comme il travaille pas sur du NSString mais du AttributedString, les balises font pas partie du string quand il va faire des matches. (c'est puissant cette bestiole...)
* détection des smileys il recherche dans le string du message et non le resultat (donc pas d'attributs, juste #airplane#)
-> il voit toujours #airplane# donc il va prendre les Start & End courant, et va faire du append
Donc on aurait :
XHTMLStart = <span class="emoticon airplane"><samp><a href="
irc://irc.worldnet.net/#airplane">
#airplane# <-- le string matché
XHTMLEnd = </a></samp></span>
key / obj correspond par exemple :
smile = ("
", ":-)", "
", "=-)", "
)", ":}", ":-}", "=}", "=-}", ":]", ":-]", "=]", "=-]");
key = smile
str = chaque élément de la liste.
dans un exemple plus "concret" de plugin, on a :
{name = Happy; image = "happy.png"; insert = "
";},
image sera utilisé pour la css, Happy, pour la class css -> key, insert -> obj
<span class="emoticon airplane">
<samp>#</samp>
</span>
est donc bien une erreur qui est dûe au MSMutableAttributedString je pense, qui voit deux découpages d'attributs :
<span ...> <samp>
<a>#airplane</a>#
</samp></span>
et :
<span ...> <samp>
#airplane#
</samp></span>
et pour trancher, il ajouterait :
</samp></span><span class="emoticon airplane"><samp>
après </a>
Si on inverse la résolution des chans, on aura toujours le même problème en fait, il va construire le span autour de #airplane#, puis va le casser pour ajouter des attributs autour de #airplane
en gros, c'est la merde...
(m'enfin je peux me tromper)