refactored boxborder functions for optimized prints

This commit is contained in:
alanw 2023-05-25 14:45:14 -07:00
parent 64764f8d40
commit d9ad8811b4

140
functions
View file

@ -3,8 +3,6 @@
# Initial Vars # Initial Vars
functionsrev=1.5.0 functionsrev=1.5.0
functionsrev=1.4.0
functionsrev=1.5.0
#scriptname="${BASH_SOURCE[0]##*/}" #scriptname="${BASH_SOURCE[0]##*/}"
#rundir="${BASH_SOURCE[0]%/*}" #rundir="${BASH_SOURCE[0]%/*}"
#rundir_absolute=$(cd $rundir && pwd) #rundir_absolute=$(cd $rundir && pwd)
@ -112,15 +110,46 @@ fi
box_break_line=$9 box_break_line=$9
} }
# # Box Drawing characters
# case $OSTYPE in
# linux-gnu*|cygwin|msys)
# light_h='\u2500'
# norm_h='\u2501'
# double_h='\u2550'
# light_v='\u2502'
# norm_v='\u2503'
# double_v='\u2551'
# ;;&
# darwin* )
# light_h='─'
# norm_h='━'
# double_h='═'
# light_v='│'
# norm_v='┃'
# double_v='║'
# ;;
# esac
# # Box border type single-line
# box-norm() {
# case $OSTYPE in
# linux-gnu*|cygwin|msys)
# set_borders "${norm_h}" "${norm_h}" "${norm_v}" "${norm_v}" "\u250f" "\u2513" "\u2517" "\u251b" "\u25AB"
# set_borders "${double_h}" "${double_h}" "${double_v}" "${double_v}" "\u2554" "\u2557" "\u255A" "\u255D" "\u25AB"
# set_borders "\u2580" "\u2584" "\u258C" "\u2590" "\u259B" "\u259C" "\u2599" "\u259F" "\u25AB"
# set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "\u25AB" "\u25AB" "\u25AB" "\u25AB" "\u23AF"
# set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "\u256D" "\u256E" "\u2570" "\u256F" "\u25A2"
# Box Drawing characters # Box Drawing characters
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
light_h='\u2500' light_h=''
norm_h='\u2501' norm_h=''
double_h='\u2550' double_h=''
light_v='\u2502' light_v=''
norm_v='\u2503' norm_v=''
double_v='\u2551' double_v=''
;;& ;;&
darwin* ) darwin* )
light_h='─' light_h='─'
@ -132,11 +161,23 @@ case $OSTYPE in
;; ;;
esac esac
set_borders() {
top_border=$1
bottom_border=$2
left_border=$3
right_border=$4
left_top_border=$5
right_top_border=$6
left_bottom_border=$7
right_bottom_border=$8
box_break_line=$9
}
# Box border type single-line # Box border type single-line
box-norm() { box-norm() {
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
set_borders "${norm_h}" "${norm_h}" "${norm_v}" "${norm_v}" "\u250f" "\u2513" "\u2517" "\u251b" "\u25AB" set_borders "${norm_h}" "${norm_h}" "${norm_v}" "${norm_v}" "┏" "┓" "┗" "┛" "▫"
;;& ;;&
darwin* ) darwin* )
set_borders "${norm_h}" "${norm_h}" "${norm_v}" "${norm_v}" "┏" "┓" "┗" "┛" "▫" set_borders "${norm_h}" "${norm_h}" "${norm_v}" "${norm_v}" "┏" "┓" "┗" "┛" "▫"
@ -148,7 +189,7 @@ box-norm() {
box-double() { box-double() {
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
set_borders "${double_h}" "${double_h}" "${double_v}" "${double_v}" "\u2554" "\u2557" "\u255A" "\u255D" "\u25AB" set_borders "${double_h}" "${double_h}" "${double_v}" "${double_v}" "╔" "╗" "╚" "╝" "▫"
;;& ;;&
darwin* ) darwin* )
set_borders "${double_h}" "${double_h}" "${double_v}" "${double_v}" "╔" "╗" "╚" "╝" "▫" set_borders "${double_h}" "${double_h}" "${double_v}" "${double_v}" "╔" "╗" "╚" "╝" "▫"
@ -160,7 +201,7 @@ box-double() {
box-heavy(){ box-heavy(){
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
set_borders "\u2580" "\u2584" "\u258C" "\u2590" "\u259B" "\u259C" "\u2599" "\u259F" "\u25AB" set_borders "▀" "▄" "▌" "▐" "▛" "▜" "▙" "▟" "▫"
;;& ;;&
darwin* ) darwin* )
set_borders "▀" "▄" "▌" "▐" "▛" "▜" "▙" "▟" "▫" set_borders "▀" "▄" "▌" "▐" "▛" "▜" "▙" "▟" "▫"
@ -172,7 +213,7 @@ box-heavy(){
box-light(){ box-light(){
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "\u25AB" "\u25AB" "\u25AB" "\u25AB" "\u23AF" set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "▫" "▫" "▫" "▫" "⎯"
;;& ;;&
darwin* ) darwin* )
set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "▫" "▫" "▫" "▫" "⎯" set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "▫" "▫" "▫" "▫" "⎯"
@ -183,7 +224,7 @@ box-light(){
box-rounded(){ box-rounded(){
case $OSTYPE in case $OSTYPE in
linux-gnu*|cygwin|msys) linux-gnu*|cygwin|msys)
set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "\u256D" "\u256E" "\u2570" "\u256F" "\u25A2" set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "╭" "╮" "╰" "╯" "▢"
;;& ;;&
darwin* ) darwin* )
set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "╭" "╮" "╰" "╯" "▢" set_borders "${light_h}" "${light_h}" "${light_v}" "${light_v}" "╭" "╮" "╰" "╯" "▢"
@ -191,6 +232,21 @@ box-light(){
esac esac
} }
box-singlechar(){
set_borders "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "-"
}
set-boxtype(){
case $boxtype in
norm) box-norm ;;
double) box-double ;;
heavy) box-heavy ;;
light) box-light ;;
rounded) box-rounded ;;
char) box-singlechar ;;
esac
}
box-singlechar(){ box-singlechar(){
set_borders "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "-" set_borders "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "$borderchar" "-"
} }
@ -208,43 +264,31 @@ box-light(){
#set-boxtype #set-boxtype
repchar() { repchar() {
n=1 local string=$(printf "%${2}s" "")
while [ $n -le $2 ] ; do echo -n "${string// /$1}"
echo -n "$1"
n=$((n+1))
done
} }
boxtop() { boxtop() {
echo -n "$left_top_border" printf "%s%s%s\n" "$left_top_border" "$(repchar "$top_border" "$((BOXWIDTH-1))")" "$right_top_border"
repchar "$top_border" $((BOXWIDTH-1))
echo -n "$right_top_border"
echo
} }
boxbottom() { boxbottom() {
echo -n "$left_bottom_border" printf "%s%s%s\n" "$left_bottom_border" "$(repchar "$bottom_border" "$((BOXWIDTH-1))")" "$right_bottom_border"
repchar "$bottom_border" $((BOXWIDTH-1))
echo -n "$right_bottom_border"
echo
} }
boxlinelog() { boxlinelog() {
local _cmd=${@:1} logger printf "%s%s\r${ESC}[%sC%s\n" "$left_border" "$1" "$BOXWIDTH" "$right_border"
#echo -e "$left_border $(logger echo -e "${1}")\r${ESC}[${BOXWIDTH}C$right_border"
logger echo -e "$left_border $_cmd\r${ESC}[${BOXWIDTH}C$right_border"
} }
boxline(){ boxline(){
echo -e "$left_border $1\r${ESC}[${BOXWIDTH}C$right_border" printf "%s%s\r${ESC}[%sC%s\n" "$left_border" "$1" "$BOXWIDTH" "$right_border"
} }
boxseparator(){ boxseparator(){
repchar "$box_break_line" $((BOXWIDTH-3)) printf "%s\n" "$(repchar "$box_break_line" "$((BOXWIDTH-3))")"
echo
} }
boxborder(){ boxborder(){
boxtop boxtop
for line in "$@" ; do for line in "$@" ; do
boxline "$line" boxline "$line"
@ -252,27 +296,23 @@ boxborder(){
boxbottom boxbottom
} }
boxborderlog(){ boxborderlog(){
local _cmd=()
boxtop boxtop
for line in "$@" ; do for line in "$@" ; do
_cmd+=("$line")
done
for line in ${_cmd[@]} ; do
boxlinelog "$line" boxlinelog "$line"
done done
boxbottom boxbottom
} }
subboxborder(){ subboxborder(){
BOXWIDTH_ORG=$BOXWIDTH local box_width_org="$BOXWIDTH"
BOXWIDTH=$(($BOXWIDTH*75/100)) BOXWIDTH=$(("$BOXWIDTH"*75/100))
boxline $(boxtop) boxline "$(boxtop)"
for line in "$@" ; do for line in "$@" ; do
boxline $(boxline "$line") boxline "$(boxline "$line")"
done done
boxline $(boxbottom) boxline "$(boxbottom)"
BOXWIDTH=$BOXWIDTH_ORG BOXWIDTH="$box_width_org"
} }
# # For printing center-justified text. To change the padding character, replace the ' ' <~~ whitespace in front of the '{' in the padding variable # # For printing center-justified text. To change the padding character, replace the ' ' <~~ whitespace in front of the '{' in the padding variable