$groupe : faire des groupes

Contenu du snippet

$Groupe permet de faire des groupes comme sur certains téléphones portables : vous pouvez mettre par exemple dans le groupe "boulets" le numéros ennemis etc. Et bien là c'est à peu près le même principe, MAIS ÇA PEUT SERVIR À D'AUTRES CHOSES...

Ajouter un groupe : //echo $groupe(<GrpName>, <1ère valeur>).add
Ajouter une valeur à un groupe : //echo $groupe(<GrpName>, <valeur>).add
Supprimer un groupe : //echo $groupe(<GrpName>).del
Supprimer une valeur d'un groupe : //echo $groupe(<GrpName>, <valeur>).del
Remplacer une valeur d'un groupe par une autre : //echo $groupe(<GrpName>, <ancienne valeur>, <nouvelle valeur>).rep
Insérer une valeur à la position N dans un groupe : //echo $groupe(<GrpName>, <valeur>, <N>).ins
Obtenir le nom d'un groupe à partir de n° de création (si vous avez crée 2 groupes "Boulets" & "Amis" le n° du groupe "Boulets" sera 1 et celui du groupe "Amis" sera 2) : //echo $groupe(<n°>).get
Obtenir la Nème valeur d'un groupe (si N = 2-, prend toutes les valeurs du groupe à partir de la 2de (VOIR AIDE $GETTOK)) : //echo $groupe(<GrpName>, <N>).get
Trier un groupe (OPTIONS : le tri par défault est alphabétique, mais n = tri numérique, c = tri par préfix de canal et r = tri inversé. (VOIR AIDE $SORTTOK)) : //echo $groupe(<GrpName>[, <options>]).sort

Source / Exemple :


; A INSERER DANS VOS ALIASES
; $Groupe, identifieur codé par HeXoR, HeXoR@wanadoo.fr (joignable sur IRC : irc.voila.fr #Microsoft)
executer alias executer_temp $1- | executer_temp | alias executer_temp
groupe {
  if $gettok($prop, 1, 45) == add && $1 != $null && $2 != $null && $findtok($readini(Groupes.hexgrp, $1, VAL), $2, 1, 32) == $null && $chr(32) !isin $2 {
    writeini -n Groupes.hexgrp $1 VAL $readini(Groupes.hexgrp, $1, VAL) $2
    return $iif($2 == $null, Groupe " $+ $1 $+ " crée, " $+ $2 $+ " ajouté dans groupe " $+ $1 $+ ")
  }
  if $gettok($prop, 1, 45) == del && $1 != $null && $chr(32) !isin $2 && $readini(Groupes.hexgrp, $1, VAL) != $null) {
    if $numtok($readini(Groupes.hexgrp, $1, VAL), 32) =< 1 { remini Groupes.hexgrp $1 | return Groupe " $+ $1 $+ " supprimé }
    elseif $findtok($readini(Groupes.hexgrp, $1, VAL), $2, 1, 32) != $null { writeini -n Groupes.hexgrp $1 VAL $deltok($readini(Groupes.hexgrp, $1, VAL), $findtok($readini(Groupes.hexgrp, $1, VAL), $2, 1, 32), 32) | return " $+ $2 $+ " supprimé du groupe " $+ $1 $+ " }
  }
  if $gettok($prop, 1, 45) == rep && $findtok($readini(Groupes.hexgrp, $1, VAL), $2, 1, 32) != $null && $3 != $null && $findtok($readini(Groupes.hexgrp, $1, VAL), $3, 1, 32) == $null && $chr(32) !isin $3 {
    writeini -n Groupes.hexgrp $1 VAL $reptok($readini(Groupes.hexgrp, $1, VAL), $2, $3, 1, 32)
    return " $+ $2 $+  " remplacé par " $+ $3 $+ " dans groupe " $+ $1 $+ "
  }
  if $gettok($prop, 1, 45) == ins && $readini(Groupes.hexgrp, $1, VAL) != $null && $findtok($readini(Groupes.hexgrp, $1, VAL), $2, 1, 32) == $null && $3 isnum && $chr(32) !isin $2 && $chr(32) !isin $3 {
    writeini -n Groupes.hexgrp $1 VAL $instok($readini(Groupes.hexgrp, $1, VAL), $2, $3, 32)
    return " $+ $2 $+ " inséré en $3 $+ e position dans groupe " $+ $1 $+ "
  }
  if $gettok($prop, 1, 45) == get && $chr(32) !isin $2 {
    if $readini(Groupes.hexgrp, $1, VAL) != $null && $2 != $null { return $gettok($readini(Groupes.hexgrp, $1, VAL), $2, 32) }
    elseif $2 == $null { var %hexgrp.x = -1 | while %hexgrp.x < $lines(Groupes.hexgrp) { inc %hexgrp.x 2 | var %hexgrp.y = %hexgrp.y $mid($read(Groupes.hexgrp, %hexgrp.x), 2, $calc($len($read(Groupes.hexgrp, %hexgrp.x)) - 2)) } | return $gettok(%hexgrp.y, $1, 32) | unset %hexgrp.* } 
  }
  if $gettok($prop, 1, 45) == sort && $readini(Groupes.hexgrp, $1, VAL) != $null && $chr(32) !isin $2 {
    executer writeini -n Groupes.hexgrp $1 VAL $chr(36) $+ sorttok($readini(Groupes.hexgrp, $1, VAL), 32 $iif($2 != $null, $chr(44) $2) $+ )
    return Groupe " $+ $1 $+ " trié $iif($2 != $null, $chr(40) $+ option : $2 $+ $chr(41))  
  }
}

Conclusion :


PS Important : les valeurs ne doivent PAS contenir d'espaces ($chr(32)), d'ailleurs j'ai mis un if ($chr(32) !isin $2) etc. dans le code pour ceux qui n'auraient pas lu ceci ;)
Aussi : j'ai besoin de commentaires pour savoir si vous voulez que je rajoute des fonctions supplémentaires, que je fasse un dialog d'exemple, etc.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.