Générateur de caractères aléatoires
This commit is contained in:
parent
91b807267f
commit
b27290df23
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…
Reference in New Issue
Block a user