Jump to content

Archived

This topic is now archived and is closed to further replies.

chain

Gestion-Couleur-Regsubex

Recommended Posts

  • Administrators
>; ---------------------------------------------

; Gestion.Couleurs.Spéciales@10.05.2007@TropNul

; ---------------------------------------------

; Fonctions:

; Cette fonction a 2 utilisations:

; 1) Elle détecte et modifie une chaîne si celle-ci est écrite avec la même couleur

;    de fond que chez soi.

; 2) De plus, elle détecte et modifie la chaîne s'il y'a des parties écrites avec la

;    même couleur de son fond.

; -

; Cela permet principalement de ne plus surligner une chaîne qu'on ne verrait pas :o)

; -

; Utilisation: /SColor Chaîne OU $SColor(Chaîne)



; -----------------

; Version Commentée

; -----------------

Alias SColor {



 ; Attribution à %z de la methode de réponse (echo ou return) si $isid ou pas ...



 Var %z = $iif($isid,Return,Echo >)



 ; S'il existe au moins un paramètre et s'il y'a au moins 1 caracteres de controle ...



 If ($regex($1-,/[[:cntrl:]]/g) > 0) {



   ; Initialisation des variables ...

   ; Ma couleur de fond - %b , Chaîne fournie - %dat , Couleur de remplacement - %r



   Var %b = $color(background) , %dat = $1- , %r = $+($chr(3),$iif(%b == 0,01,$abs($calc(%b -16))))



   ; - Ci-dessous les Expressions Rationnelles utilisées pour détecter les deux cas

   ; de figures de l'intitulé ...

   ; >> \x2 = CtrlB , \x2C = $chr(44) , \x3 = CtrlK , \x1F = CtrlU , \xF = CtrlO

   ; La variable %i correspond à 
   ; CtrlBCtrlU OU CtrlUCtrlB >



   Var %i' = (?:\x2?\x1F?|\x1F?\x2?) , %i = $+(%i',\x3,%i')



   ; Les variables %h & %m vont quant à elles, détecter la fin d'un morceau de chaîne

   ; et surtout contenir la dite chaîne !



   Var %h = (\x2?[^0-9][^\x3\xF]+) , %m = (\x2?[^\x3\xF]+)



   ; La variable %j vérifiera si la chaîne reçue a une couleur de fond égale à la

   ; couleur de l'écriture



   Var %j = (1([0-5]),1\4|0([0-9]),0\5|0([2-9]),\6|([0-9]),0\7|([2-9]),\8) %m $+ $chr(124) $+ (0([01]),\11|([01]),\12) %h



   ; La variable %k, ci-dessous est 'calculée' pour gérer les chaînes reçues de couleur

   ; égale à la couleur de fond qu'on utilise.

   ; Cela permet donc de ne pas 'surligner' ;o)



   If ($len(%b) == 1) {

     If $regex(%b,/[02-9]/) { Var %k = ((0? %b )\x2C(0? %b )[^ $+ %b $+ -9]|(0? %b )[^\x2C]) %m }

     Else { Var %k = (01,01|01,1[^0-5]|1,1[^0-5]|1,01|0?1[^0-9]((?
   }

   Else { Var %k = (( %b )\x2C( %b )|( %b )[^\x2C]|( %b )\x2C[^0-9]) %m }



   ; Les variables %c & %d contiennent les Expressions Rationnelles finales utilisées

   ; dans les $regsubex

   ; %c : utilisée pour détecter un texte écrit avec la couleur de mon fond

   ; - c'est-à-dire: CtrlK suivi de %b OU CtrlK suivi de %b,%b

   ; %d : utilisée pour détecter un texte avec fond où la couleur est de la forme suivante:

   ; - CtrlKNuméro1,Numéro2 où Numéro1 == Numéro2



   Var %c = /( %i ( %k ))/gix , %d = /( %i ( %j ))/gix



   ; Le $regsubex en bref: permet de substituer d'une chaîne fournie ce qui est vérifiée

   ; par l'expression rationnelle en second paramètre

   ; Utilisation Générale: $regsubex(Chaîne,Expression Rationnelle,S'il y'a un match remplacer par ceci)

   ; Première détection: La chaîne est écrite avec la couleur de mon fond

   ; en décortiquant:

   ; - S'il y'a un match, remplacer par ceci > $+($chr(15),%r,>,\2,$chr(15))

   ; --- La 'Chaîne' est représentée par \2 selon la disposition des regroupements dans

   ; --- l'expression rationnelle %c

   ; Donc, détection = en (echo|retour): CtrlOCtrlKCouleurdeRemplacement>ChaîneCtrlO



   Var %dat = $regsubex(%dat,%c,$+($chr(15),%r,>,\2,$chr(15)))



   ; Deuxième détection: La chaîne a des parties de texte cachées (Couleur texte == Couleur Fond) ...

   ; en décortiquant:

   ; - S'il y'a un match remplacer par ceci > $+($chr(15),%r,>,\2,$chr(15))

   ; -- en détail:

   ; --- La 'Chaîne' est représentée par \2 selon la disposition des regroupements dans

   ; --- l'expression rationnelle %d

   ; Donc, détection = en (echo|retour): CtrlOCtrlKCouleurdeRemplacement>ChaîneCtrlO



   %z $regsubex(%dat,%d,$+($chr(15),%r,>,\2,$chr(15)))

 }



 ; Affichage d'erreur si aucun paramètre n'est fournit à l'appel de la fonction :o)



 Else { %z $color(info) $+ * /SColor: insufficient parameters - paramètres insuffisant }

}



; ------------------------

; Version Non-Commentée :p

; ------------------------

Alias SColor {

 Var %z = $iif($isid,Return,Echo >)

 If ($regex($1-,/[[:cntrl:]]/g) > 0) {

   Var %b = $color(background) , %dat = $1- , %r = $+($chr(3),$iif(%b == 0,01,$abs($calc(%b -16))))

   Var %i' = (?:\x2?\x1F?|\x1F?\x2?) , %i = $+(%i',\x3,%i') , %h = (\x2?[^0-9][^\x3\xF]+) , %m = (\x2?[^\x3\xF]+)

   Var %j = (1([0-5]),1\4|0([0-9]),0\5|0([2-9]),\6|([0-9]),0\7|([2-9]),\8) %m $+ $chr(124) $+ (0([01]),\11|([01]),\12) %h

   If ($len(%b) == 1) {

     If $regex(%b,/[02-9]/) { Var %k = ((0? %b )\x2C(0? %b )[^ $+ %b $+ -9]|(0? %b )[^\x2C]) %m }

     Else { Var %k = (01,01|01,1[^0-5]|1,1[^0-5]|1,01|0?1[^0-9]((?
   }

   Else { Var %k = (( %b )\x2C( %b )|( %b )[^\x2C]|( %b )\x2C[^0-9]) %m }

   Var %c = /( %i ( %k ))/gix , %d = /( %i ( %j ))/gix

   Var %dat = $regsubex(%dat,%c,$+($chr(15),%r,>,\2,$chr(15)))

   %z $regsubex(%dat,%d,$+($chr(15),%r,>,\2,$chr(15)))

 }

 Else { %z $color(info) $+ * /SColor: insufficient parameters - paramètres insuffisants }

}



; -----

; Eof()

; -----

Link to comment
Share on other sites



×
×
  • Create New...