faire base.bool et base.num

This commit is contained in:
Jephté Clain 2014-10-13 09:30:16 +04:00
parent 2f9ec953d7
commit 99d67095a3
6 changed files with 114 additions and 50 deletions

View File

@ -1 +1 @@
003008000 004000000

View File

@ -32,10 +32,14 @@ fi
##@include base.init ##@include base.init
##@include base.core ##@include base.core
##@include base.string ##@include base.string
##@include base.num
##@include base.bool
##@include base.array ##@include base.array
##@include base.quote
##@include base.split
##@include base.compat ##@include base.compat
uprovide base uprovide base
urequire base.init base.core base.string base.quote base.split base.array base.compat urequire base.init base.core base.string base.num base.bool base.array base.quote base.split base.compat
## Informations sur l'hôte sur lequel tourne ce script ## Informations sur l'hôte sur lequel tourne ce script
# Type de système # Type de système

70
lib/ulib/base.bool Normal file
View File

@ -0,0 +1,70 @@
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions de base: valeurs booléennes
##@cooked nocomments
##@include base.num
# Note: contient du code spécifique à bash 4. Le module base.compat réimplémente
# les fonctions concernées pour les rendre compatible avec bash >= 2.x
uprovide base.bool
urequire base.num
function is_yes() {
# retourner vrai si $1 est une valeur "oui"
case "${1,,}" in
o|oui|y|yes|v|vrai|t|true|on) return 0;;
esac
isnum "$1" && [ "$1" -ne 0 ] && return 0
return 1
}
function is_no() {
# retourner vrai si $1 est une valeur "non"
case "${1,,}" in
n|non|no|f|faux|false|off) return 0;;
esac
isnum "$1" && [ "$1" -eq 0 ] && return 0
return 1
}
function yesval() {
# normaliser une valeur vraie: si $1 est une valeur "oui", afficher 1, sinon
# afficher une chaine vide
is_yes "$1" && echo 1
}
function _setb() {
# Lancer la commande $2..@ en supprimant l'affichage standard et d'erreur. Si la
# commande retourne vrai, assigner la valeur 1 à la variable $1. Sinon, lui
# assigner la valeur ""
# note: en principe, la syntaxe est '_setb var cmd args...'. cependant, la
# syntaxe '_setb var=cmd args...' est supportée aussi
local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then
set -- "${__s_var#*=}" "$@"
__s_var="${__s_var%%=*}"
fi
local __s_r
if "$@" >&/dev/null; then
eval "$__s_var=1"
else
__s_r=$?
eval "$__s_var="
return $__s_r
fi
}
function evalb() {
# Lancer les commandes $@ avec evalx() en supprimant l'affichage standard et
# d'erreur. Si les commandes retournent vrai, afficher 1. Sinon, afficher ""
if evalx "$@" >&/dev/null; then
echo 1
else
return $?
fi
}
function setb() {
# équivalent à setx $1 evalb $2..@
local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then
set -- "${__s_var#*=}" "$@"
__s_var="${__s_var%%=*}"
fi
setx "$__s_var" evalb "$@"
}

View File

@ -1,7 +1,12 @@
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x ## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x
##@cooked nocomments ##@cooked nocomments
##@include base.core
##@include base.num
##@include base.bool
##@include base.quote
uprovide base.compat uprovide base.compat
urequire base.core base.num base.bool base.quote
## Fonctions obsolètes ## Fonctions obsolètes
@ -52,6 +57,8 @@ if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
done done
echo "${vs[*]}" echo "${vs[*]}"
} }
# base.bool
function is_yes() { function is_yes() {
case "$1" in case "$1" in
o|oui|y|yes|v|vrai|t|true|on) return 0;; o|oui|y|yes|v|vrai|t|true|on) return 0;;

31
lib/ulib/base.num Normal file
View File

@ -0,0 +1,31 @@
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions de base: gestion des valeurs numériques
##@cooked nocomments
uprovide base.num
function isnum() {
# retourner vrai si $1 est une valeur numérique entière (positive ou négative)
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v#-}"
v="${v//[0-9]/}"
[ -z "$v" ]
}
function ispnum() {
# retourner vrai si $1 est une valeur numérique entière positive
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v//[0-9]/}"
[ -z "$v" ]
}
function isrnum() {
# retourner vrai si $1 est une valeur numérique réelle (positive ou négative)
# le séparateur décimal peut être . ou ,
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v#-}"
v="${v//./}"
v="${v//,/}"
v="${v//[0-9]/}"
[ -z "$v" ]
}

View File

@ -116,54 +116,6 @@ function strrepl() {
eval "$cmd" eval "$cmd"
} }
function isnum() {
# retourner vrai si $1 est une valeur numérique entière (positive ou négative)
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v#-}"
v="${v//[0-9]/}"
[ -z "$v" ]
}
function ispnum() {
# retourner vrai si $1 est une valeur numérique entière positive
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v//[0-9]/}"
[ -z "$v" ]
}
function isrnum() {
# retourner vrai si $1 est une valeur numérique réelle (positive ou négative)
# le séparateur décimal peut être . ou ,
[ ${#1} -gt 0 ] || return 1
local v="$1"
v="${v#-}"
v="${v//./}"
v="${v//,/}"
v="${v//[0-9]/}"
[ -z "$v" ]
}
function is_yes() {
# retourner vrai si $1 est une valeur "oui"
case "${1,,}" in
o|oui|y|yes|v|vrai|t|true|on) return 0;;
esac
isnum "$1" && [ "$1" -ne 0 ] && return 0
return 1
}
function is_no() {
# retourner vrai si $1 est une valeur "non"
case "${1,,}" in
n|non|no|f|faux|false|off) return 0;;
esac
isnum "$1" && [ "$1" -eq 0 ] && return 0
return 1
}
function yesval() {
# normaliser une valeur vraie: si $1 est une valeur "oui", afficher 1, sinon
# afficher une chaine vide
is_yes "$1" && echo 1
}
function first_char() { function first_char() {
# retourner le premier caractère de la chaine $* # retourner le premier caractère de la chaine $*
local str="$*" local str="$*"