[code morse] encode/decode sans $replace

Contenu du snippet

salut à vous,
donc il s'agit d'un addon pour "encoder" et "decoder" du language Morse (langage utilisé il y a bien longtemp pour les telegrammes, ancetre de nos telephones mobile..blablabla...)

Source / Exemple :


dialog morse {
  title "Le code Morse [Encode/Decode]"
  size -1 -1 171 118
  option dbu
  text "Texte normal :", 1, 2 2 36 8
  edit "", 2, 1 10 169 40, disable multi return vsbar
  text "Texte Morse :", 3, 2 57 35 8
  text "", 4, 3 50 167 8, disable
  edit "", 5, 1 65 169 40, disable multi return vsbar
  button "ok", 6, 114 107 23 9, default
  button "no", 7, 140 107 23 9, cancel
  radio "Norm", 11, 80 108 25 8
  radio "Morse", 12, 51 108 25 8
  text "? By Mrud ?", 8, 5 108 41 8, disable
}
on 1:dialog:morse:*:*:{
  if ($devent = init) {
    did -a $dname 4 $str($chr(151),33)
  }
  if ($devent = sclick) {
    if ($did = 6) { 
      if ($did(11).state) && ($did(2).text) { did -r $dname 5 
        var %i 1 | while (%i <= $did($dname,2).lines) {
          if ($did(morse,2,%i).len) { did -ema $dname 5 $sMorse($did($dname,2,%i)) $+ $iif($did(morse,2,$calc(%i +1)).len,$crlf) }
      inc %i } }
      if ($did(12).state) && ($did(5).text) { did -r $dname 2 
        var %i 1 | while (%i <= $did($dname,5).lines) {
          if ($did(morse,5,%i).len) { did -ema $dname 2 $sMorse($did($dname,5,%i)) $+ $iif($did(morse,5,$calc(%i +1)).len,$crlf) }
      inc %i } }
    }
    if ($did = 11) && ($did(11).state) { did -ne $dname 2 | did -mb $dname 5 }
    if ($did = 12) && ($did(12).state) { did -ne $dname 5 | did -mb $dname 2 }
  }
}
alias sMorse { $iif($left($1,1) = . || $left($1,1) = -,return $sDmor($1),return $sEmor($1)) }
alias sDmor {
  var %dmorse .-,a,-...,b,-.-.,c,-..,d,.,e,..-.,f,--.,g,....,h,..,i,.---,j,-.-,k,.-..,l,--,m,-.,n,---,o,.--.,p,--.-,q,.-.,r,...,s,-,t,..-,u,...-,v,.--,w,-..-,x,-.--,y,--..,z,.----,1,..---,2,...--,3,....-,4,.....,5,-.....,6,--...,7,---..,8,----.,9,-----,0,.-.-.-,.,-..-.,/,.-.-.,+,.----.,',-....-,-,-...-,=,---...,:,-.-.-.,;,.-..-.,",.-.-..,§,...-..-,$,..--.-,_,..--..,?,.--.-,à,-.-..,ç,.-..-,è,..-..,é  
  var %i 1 | while (%i <= $numtok($1,32)) {
    var %o 1 | while (%o <= $calc($numtok(%dmorse,44)/2)) {
    if ($gettok($1,%i,32) = $gettok(%dmorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%dmorse,$calc(%o *2),44),0,0) } | inc %o }
  if (%i = $numtok($1,32)) { return %rez } | inc %i }
}
alias sEmor {
  var %emorse  a,.-,b,-...,c,-.-.,d,-..,e,.,f,..-.,g,--.,h,....,i,..,j,.---,k,-.-,l,.-..,m,--,n,-.,o,---,p,.--.,q,--.-,r,.-.,s,...,t,-,u,..-,v,...-,w,.--,x,-..-,y,-.--,z,--..,1,.----,2,..---,3,...--,4,....-,5,.....,6,-.....,7,--...,8,---..,9,----.,0,-----,.,.-.-.-,/,-..-.,+,.-.-.,',.----.,-,-....-,=,-...-,:,---...,;,-.-.-.,",.-..-.,§,.-.-..,$,...-..-,_,..--.-,?,..--..,à,.--.-,ç,-.-..,è,.-..-,é,..-..
  var %i 1 | while (%i <= $len($1)) { 
    var %o 1 | while (%o <= $calc($numtok(%emorse,44)/2)) {
    if ($mid($1,%i,1) = $gettok(%emorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%emorse,$calc(%o *2),44),0,32)) } | inc %o }
  if (%i = $len($1)) { return %rez } | inc %i }
}

Conclusion :


j'ai pas utiliser de $replace donc je pens que c'est interessant.. non ?
niveau : initié, je ne pens pas qu'un debutant en mirc puisse comprendre le code, il fera que le pomper. Donc voilà.

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.