Skip to content

Commit 2b45a99

Browse files
authored
Merge pull request #2 from nschlimm/feature/delimiter
Changed the delimiter to make it safe cross platform
2 parents 670bb6a + d6da0b1 commit 2b45a99

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

shellmenu.sh

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ menuHeadingFGClr="$clrWhite"
2525
menuHeadingBGClr="$clrBlue"
2626
submenuFGClr="$clrCyan"
2727
submenuBGClr="$clrBlack"
28+
delimiter=⊕
2829

2930
############################
3031
############################
@@ -75,7 +76,7 @@ submenuHead () {
7576
# Prints the menu item to standard out.
7677
#################################################
7778
menuItem () {
78-
menudatamap+=("$1#$2#$3#$actualsubmenuname#$actualmenu#1")
79+
menudatamap+=("$1$delimiter$2$delimiter$3$delimiter$actualsubmenuname$delimiter$actualmenu$delimiter1")
7980
${immediateMode} && printMenuItem "$1" "$2"
8081
}
8182

@@ -101,8 +102,8 @@ menuItem () {
101102
#################################################
102103
menuItemClm () {
103104
clmLocalWidth=${globalClmWidth:=45}
104-
menudatamap+=("$1#$2#$3#$actualsubmenuname#$actualmenu#1")
105-
menudatamap+=("$4#$5#$6#$actualsubmenuname#$actualmenu#2")
105+
menudatamap+=("$1$delimiter$2$delimiter$3$delimiter$actualsubmenuname$delimiter$actualmenu$delimiter1")
106+
menudatamap+=("$4$delimiter$5$delimiter$6$delimiter$actualsubmenuname$delimiter$actualmenu$delimiter2")
106107
${immediateMode} && printMenuItemClm "$1" "$2" "$4" "$5"
107108
}
108109

@@ -396,18 +397,19 @@ waitonexit () {
396397
# The executed user defined function or command
397398
#################################################
398399
callKeyFunktion () {
400+
OLD_IFS=$IFS
399401
for i in "${menudatamap[@]}"
400402
do
401-
keys2=$(echo "$i" | cut -d'#' -f1)
402-
if [ "$1" = "$keys2" ]
403+
IFS="$delimiter" read -r key description action submenu menu column <<< "$i"
404+
if [ "$1" = "$key" ]
403405
then
404-
method=$(echo "$i" | cut -f3 -d#)
405-
clear && importantLog "$method"
406-
eval "$method"
406+
clear && importantLog "$action"
407+
eval "$action"
407408
return 1
408409
fi
409410
done
410411
return 5
412+
IFS=$OLD_IFS
411413
}
412414

413415
#################################################
@@ -423,8 +425,8 @@ generateMenu () {
423425
submenucount=0
424426
clear
425427
for ((index=0; index<${#menudatamap[@]}; index++)); do
426-
IFS="#" read -r key description action submenu menu column <<< "${menudatamap[index]}"
427-
IFS="#" read -r nextkey nextdescription nextaction nextsubmenu nextmenu nextcolumn <<< "${menudatamap[((index+1))]}"
428+
IFS="$delimiter" read -r key description action submenu menu column <<< "${menudatamap[index]}"
429+
IFS="$delimiter" read -r nextkey nextdescription nextaction nextsubmenu nextmenu nextcolumn <<< "${menudatamap[((index+1))]}"
428430
if [ "$index" -eq "0" ]; then printMenuHeading "$menu" && echo; fi
429431
if [ "$submenu" != "$previoussubmenu" ]; then
430432
if [ "$submenucount" -gt 0 ]; then echo; fi

0 commit comments

Comments
 (0)