ulib: strops: ajout des opération mid et repl

This commit is contained in:
Jephté Clain 2016-10-21 15:31:02 +04:00
parent 8d486dc4e3
commit d735b7b695
1 changed files with 6 additions and 1 deletions

View File

@ -126,7 +126,7 @@ function strops() {
# :- := :? :+ deref dcount # :- := :? :+ deref dcount
# Toutes les autres opérations travaillent directement avec la valeur # Toutes les autres opérations travaillent directement avec la valeur
# courante. Les opérations suivantes appliquent une transformation: # courante. Les opérations suivantes appliquent une transformation:
# # % / : ^ , +# -# +% -% + - # # % / : ^ , +# -# +% -% + - mid repl
# Les opérations suivantes font un test sur la valeur et retournent # Les opérations suivantes font un test sur la valeur et retournent
# immédiatement: # immédiatement:
# = == != < > -eq -ne -lt -le -gt -ge -n -z # = == != < > -eq -ne -lt -le -gt -ge -n -z
@ -140,6 +140,8 @@ function strops() {
# -#STR supprimer un préfixe # -#STR supprimer un préfixe
# +%STR ou +STR ajouter un suffixe # +%STR ou +STR ajouter un suffixe
# -%STR ou -STR supprimer un suffixe # -%STR ou -STR supprimer un suffixe
# mid RANGE traiter la chaine avec strmid()
# repl FROM TO traiter la chaine avec strrepl()
local -a __s_tmp local -a __s_tmp
local __s_value="$1"; shift local __s_value="$1"; shift
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
@ -164,6 +166,9 @@ function strops() {
+*) eval '__s_value="$__s_value"'"${1#+}";; +*) eval '__s_value="$__s_value"'"${1#+}";;
-%*) eval '__s_value="${__s_value'"${1#-}"'}"';; -%*) eval '__s_value="${__s_value'"${1#-}"'}"';;
-*) eval '__s_value="${__s_value%'"${1#-}"'}"';; -*) eval '__s_value="${__s_value%'"${1#-}"'}"';;
mid|strmid) eval '__s_value="$(strmid "$2" "$__s_value")"'; shift;;
repl|strrepl) eval '__s_value="$(strrepl "$2" "$3" "$__s_value")"'; shift; shift;;
*) echo 1>&2 "strops: unknown operator: $1";;
esac esac
shift shift
done done