Communauté sur les Eggdrops - Community about Eggdrops
[Résolu] Codes couleurs protégés ? - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: [Résolu] Codes couleurs protégés ? (/showthread.php?tid=1416)



Codes couleurs protégés ? - CrazyCat - 30/09/2013

Pour une fois, je poste pour faire travailler vos neurones.

Je me suis aperçu que lorsqu'il y a un code couleur dans un fichier externe au tcl, le tcl le protège et donc ne peut pas l'interpréter.

Pour faire simple:

Fichier source:

Code:
test : \002(\037)¯¯¯¯)¯¯¯¯¯¯¯¯¯¯¯\037)~~~\002
Script :

Code:
bind pub - "!read" goread

set filei "databases/small.db"
proc goread { user host handle chan args } {
   set fp [open $::filei "r"]
   set line [gets $fp]
   putserv "PRIVMSG #canal :$line"
   close $fp
}
Rendu : la ligne telle que présente dans le source, avec les \

Tests faits:

Code:
regsub -all -- \\\\ $line \ line
   regsub -all -- \\\\ $line \\ line
   regsub -all -- \\\\0 $line \\0 line
   regsub -all -- \\\\0(\d{1,} $line \\0\1 line
   regsub -all -- \\\\ $line "a" line
L'avant dernier fait perdre tout ce qui est coloré, le dernier provoque bien le remplacement du \ de la source par un a, donc il doit bien exister une astuce pour que le code soit interprété, non ?

Des idées ?


RE: Codes couleurs protégés ? - MenzAgitat - 30/09/2013

Un join sur la chaîne de caractères contenant des codes de style les interprètera, si toutefois j'ai bien compris ton problème en lisant vite fait.


RE: Codes couleurs protégés ? - CrazyCat - 01/10/2013

Bravo ! Ce n'est vraiment pas une idée que j'aurais eue.


RE: [Résolu] Codes couleurs protégés ? - aliasangelius - 01/10/2013

Et un string map serait pas une solution aussi pour les chaines de caractères ?


RE: [Résolu] Codes couleurs protégés ? - CrazyCat - 01/10/2013

Non, ça n'a aucun rapport.
Le souci était que les codes couleurs ne sont pas interprétés, ce n'est pas (comme je le croyais au départ) un problème de substitution.


RE: [Résolu] Codes couleurs protégés ? - MenzAgitat - 01/10/2013

Je redonne l'explication qui a été donnée sur IRC afin que tout le monde puisse en profiter.

Les codes de style sont neutralisés dans les listes sans nécessiter de doubles antislash (\\) devant, ce qui peut être un peu perturbant puisqu'on s'attendrait par conséquent à ce qu'ils soient interprétés :

Quote:<MenzAgitat> .tcl return {ceci est un \00304test\003}
<Boole> Tcl: ceci est un \00304test\003
<MenzAgitat> .tcl return [join {ceci est un \00304test\003}]
<Boole> Tcl: ceci est un test



RE: Codes couleurs protégés ? - CrazyCat - 01/10/2013

Et donc, il semblerait que gets retourne une liste et non pas une chaine.
Je ne sais pas s'il y a un moyen de vérifier ça


RE: Codes couleurs protégés ? - djkenny - 02/10/2013

salut,
si mes souvenirs sont bon (et oui je n'ai pas codé depuis un moment) gets protège la liste de la façon suivante:

Code:
un petit {\00301test} {[test]} \{test\}
un moyen simple de vérifier l'état de la liste est de la réécrire directement dans un fichier avec
Code:
puts $file $line
(à vérifier quand même)