feat: Improve performance for empty line print for larger lists

This commit is contained in:
Timo Reymann
2023-02-16 12:18:27 +01:00
parent cd8c3c5d5b
commit 3b02fbb911
2 changed files with 11 additions and 4 deletions
+10 -3
View File
@@ -25,7 +25,14 @@ _key_input() {
# print new line for empty element in array # print new line for empty element in array
# shellcheck disable=SC2231 # shellcheck disable=SC2231
_new_line_foreach_item() { for _ in $1[@]; do echo -en "\n" >&2; done } _new_line_foreach_item() {
count=0
while [[ $count -lt $1 ]];
do
echo "" >&2
((count++))
done
}
# display prompt text without linebreak # display prompt text without linebreak
_prompt_text() { _prompt_text() {
@@ -122,7 +129,7 @@ list() {
local opts=("${@:2}") local opts=("${@:2}")
local opts_count=$(($# -1)) local opts_count=$(($# -1))
_new_line_foreach_item "${opts[*]}" _new_line_foreach_item "${#opts[@]}"
# determine current screen position for overwriting the options # determine current screen position for overwriting the options
local lastrow; lastrow=$(_get_cursor_row) local lastrow; lastrow=$(_get_cursor_row)
@@ -179,7 +186,7 @@ checkbox() {
local opts; opts=("${@:2}") local opts; opts=("${@:2}")
local opts_count; opts_count=$(($# -1)) local opts_count; opts_count=$(($# -1))
_new_line_foreach_item "${opts[*]}" _new_line_foreach_item "${#opts[@]}"
# determine current screen position for overwriting the options # determine current screen position for overwriting the options
local lastrow; lastrow=$(_get_cursor_row) local lastrow; lastrow=$(_get_cursor_row)
+1 -1
View File
@@ -25,7 +25,7 @@ log "$LOG_ERROR" "Error message"
# PROMPTS # PROMPTS
# #
options=("one" "two" "three" "four") options=("one" "two" "three" "four" "a" "b" "c" "d" "e")
validate_password() { validate_password() {
if [ ${#1} -lt 10 ];then if [ ${#1} -lt 10 ];then