Skip to content

Commit 0037aeb

Browse files
authored
Modify 'trim' gestion of options
1 parent 16b994c commit 0037aeb

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

trim

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22
#oxr 2025
33
# Devuelve una porcion de una cadena
44
#
5-
# \\r trim varname [-p|-s|posº] countº (solo si se incluyo '. trim')
5+
# \\r trim <varname> [-p|-s|posº] countº [--] <string>
66
#
7-
# \\r trim [-n] [-p|-s|posº] countº string
8-
#
9-
# 'varname' Modificara dicha variable
7+
# 'varname' Modificara su valor o se le asignara la modificacion de 'string'
108
# '-n' Usar este modo a pesar de haber incluido el script
119
# '-p|-s|posº' Extrae del prefijo, sufijo(por defecto) o desde posº
1210
# 'countº' nº de caracteres a extraer
13-
# 'string' Cadena a recortar y mostrar
11+
# '--' Si 'string' es un numero
12+
# 'string' Cadena a utilizar. Se mostrara si no 'varname'
1413
#
1514

1615

@@ -19,26 +18,27 @@
1918

2019
trim(){
2120
local trim_v="" trim_s="" o="-s" c="" n="" trim_x="" w=""
22-
case $# in
23-
0|1) infsh ~/code/trim 3 13 ; return ;;
24-
2) isnum $1 && c=$1 o="-s" || { trim_v=$1 c=$2 ; shift ;} ; shift ;;
25-
3) isnum $1 && n=$1 c=$2 || { [ ${1#-} = $1 ] && {
26-
[ ${2#-} = $2 ] && trim_v=$1 n=$2 c=$3 || trim_v=$1 o=$2 c=$3 ; shift
27-
} || o=$1 c=$2 ;} ; shift 2 ;;
28-
4) [ ${1#-} = $1 ] || { [ ${2#-} = $2 ] && o=$1 n=$2 c=$3 || o="$1 $2" c=$3 ;} ; shift 3 ;;
29-
*) o="$1 $2" n=$3 c=$4 ; shift 4 ;;
30-
esac
31-
o=${o#* }
21+
[ $# -gt 1 ] || { infsh ~/code/trim 3 12 ; return ;}
22+
23+
isnum $1 || [ ${1#-} != $1 ] || { trim_v=$1 ; shift ;}
24+
25+
isnum $1 && {
26+
isnum $2 && { n=$1 c=$2 ; shift 2 ;} || { c=$1 ; shift ;}
27+
} || {
28+
o=$1 c=$2 ; shift 2
29+
}
30+
[ "$1" = -- ] && shift
31+
3232
[ $# -eq 0 ] && eval trim_s=\$$trim_v || trim_s="$@"
33-
# echo ..TRIM=$trim_v..O=$o..N=$n..C=$c..S=$trim_s..
34-
# return
33+
3534
[ ${#n} -gt 0 ] && {
3635
enum n $((n-1)) ; for n in $n ; do trim_s=${trim_s#?} ; done
3736
n=${#trim_s} ; enum n $((n-c)) ; for n in $n ; do trim_s=${trim_s%?} ; done
3837
} || {
3938
n=${#trim_s} ; [ $c -le $n ] && c=$((n-c)) || c=0
4039
enum c $c ; for c in $c ; do trim_x=$trim_x"?" ; done
4140
}
41+
4242
[ "$o" = "-p" ] && trim_s=${trim_s%$trim_x} || trim_s=${trim_s#$trim_x}
4343
[ ${#trim_v} -eq 0 ] && echo "$trim_s" || eval $trim_v='$trim_s'
4444
}

0 commit comments

Comments
 (0)