Générateur de caractères aléatoires
This commit is contained in:
		
							parent
							
								
									91b807267f
								
							
						
					
					
						commit
						b27290df23
					
				
					 1 changed files with 94 additions and 0 deletions
				
			
		
							
								
								
									
										94
									
								
								aliases/random.elv
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								aliases/random.elv
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,94 @@
 | 
			
		|||
use str
 | 
			
		||||
use re
 | 
			
		||||
 | 
			
		||||
fn -bytes [begin size]{
 | 
			
		||||
  str:from-codepoints (range $begin (+ $begin $size))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -upper []{
 | 
			
		||||
  -bytes 0x41 26
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -lower []{
 | 
			
		||||
  -bytes 0x61 26
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -digit []{
 | 
			
		||||
  -bytes 0x30 10
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -j [@strings]{
 | 
			
		||||
  str:join '' $strings
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -alpha []{
 | 
			
		||||
  -j (-upper) (-lower)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -alphanum []{
 | 
			
		||||
  -j (-alpha) (-digit)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -random [chars]{
 | 
			
		||||
  var size = (count $chars)
 | 
			
		||||
  print $chars[(randint 0 $size)]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -is-int [arg]{
 | 
			
		||||
  re:match '^\d+$' $arg
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn -help []{
 | 
			
		||||
  echo 'Génère une chaîne de caractères aléatoires'
 | 
			
		||||
  echo 'Usage: genstr [(-auldh)] [<chars>] [<size>]'
 | 
			
		||||
  echo ''
 | 
			
		||||
  echo 'Options:'
 | 
			
		||||
  echo '  -a  Uniquement des lettres ([A-Za-z])'
 | 
			
		||||
  echo '  -u  Uniquement des lettres majuscules ([A-Z])'
 | 
			
		||||
  echo '  -l  Uniquement des lettres minuscules ([a-z])'
 | 
			
		||||
  echo '  -d  Uniquement des chiffres ([0-9])'
 | 
			
		||||
  echo ''
 | 
			
		||||
  echo '<chars> Liste de caractères possibles'
 | 
			
		||||
  echo '<size>  Longueur de la chaîne (par défaut: 10)'
 | 
			
		||||
  echo ''
 | 
			
		||||
  echo 'Si aucune classe de caractères ou liste de caractères n’est fournie, utilise les caractères alphanumériques ([A-Za-z0-9]).'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
edit:add-var genstr~ [@args]{
 | 
			
		||||
  var len chars h = 0 '' $false
 | 
			
		||||
  each [e]{
 | 
			
		||||
    if (or (eq $e -h) (eq $e --help)) {
 | 
			
		||||
      set h = $true
 | 
			
		||||
      -help
 | 
			
		||||
      break
 | 
			
		||||
    } elif (eq $e -a) {
 | 
			
		||||
      set chars = (-j $chars (-alpha))
 | 
			
		||||
    } elif (eq $e -u) {
 | 
			
		||||
      set chars = (-j $chars (-upper))
 | 
			
		||||
    } elif (eq $e -l) {
 | 
			
		||||
      set chars = (-j $chars (-lower))
 | 
			
		||||
    } elif (eq $e -d) {
 | 
			
		||||
      set chars = (-j $chars (-digit))
 | 
			
		||||
    } elif (and (-is-int $e) (> $e 0)) {
 | 
			
		||||
      set len = $e
 | 
			
		||||
    } else {
 | 
			
		||||
      set chars = (-j $chars $e)
 | 
			
		||||
    }
 | 
			
		||||
  } $args
 | 
			
		||||
 | 
			
		||||
  if (not $h) {
 | 
			
		||||
    if (== $len 0) {
 | 
			
		||||
      set len = 10
 | 
			
		||||
    }
 | 
			
		||||
    if (eq $chars '') {
 | 
			
		||||
      set chars = (-alphanum)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    set chars = [(str:split '' $chars)]
 | 
			
		||||
 | 
			
		||||
    range $len | each [_]{
 | 
			
		||||
      -random $chars
 | 
			
		||||
    }
 | 
			
		||||
    echo
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue