optimized line printing

This commit is contained in:
Timerix 2024-07-19 01:43:57 +03:00
parent 4b4794e253
commit f4c12e9b0e

View File

@ -21,6 +21,14 @@ function myprint {
printf "${GRAY}$@${GRAY}\n" printf "${GRAY}$@${GRAY}\n"
} }
function myprint_quiet {
local quiet=$1
local text="$2"
if [ "$quiet" != true ]; then
myprint "$text"
fi
}
# print message and exit # print message and exit
function error { function error {
myprint "${RED}$@" myprint "${RED}$@"
@ -36,6 +44,16 @@ function ask_yn {
return $([[ "$answ" = [Yy] ]]); return $([[ "$answ" = [Yy] ]]);
} }
function char_multiply {
local character="$1"
local length="$2"
i=0
while [ $i -lt $length ]; do
printf $character
i=$((i+1))
done
}
# prints horizontal line occupying whole terminal row # prints horizontal line occupying whole terminal row
# https://en.wikipedia.org/wiki/Box-drawing_characters # https://en.wikipedia.org/wiki/Box-drawing_characters
function print_hline { function print_hline {
@ -47,7 +65,10 @@ function print_hline {
if [ -z "$character" ]; then if [ -z "$character" ]; then
character="-"; character="-";
fi fi
printf "${color}%.s${character}" $(seq 2 $(tput cols)) local term_width=$(tput cols)
local line_length=$((term_width - 1))
printf "${color}"
char_multiply "$character" $line_length
printf "${GRAY}\n" printf "${GRAY}\n"
} }
@ -65,10 +86,11 @@ function print_header {
local term_width=$(tput cols) local term_width=$(tput cols)
local label_length=${#label} local label_length=${#label}
local line_characters_count=$((term_width - label_length - 2)) local line_characters_count=$((term_width - label_length - 2))
local letf_line_length=$(( line_characters_count / 2 )) local left_line_length=$(( line_characters_count / 2 ))
local right_line_length=$(( letf_line_length + line_characters_count % 2 )) local right_line_length=$(( left_line_length - 1 + line_characters_count % 2 ))
printf "${color}%.s${character}" $(seq 1 $letf_line_length) printf "${color}"
printf "[${label}]" char_multiply "$character" $left_line_length
printf "${color}%.s${character}" $(seq 2 $right_line_length) printf "[${label}]${color}"
char_multiply "$character" $right_line_length
printf "${GRAY}\n" printf "${GRAY}\n"
} }