You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
#!/usr/bin/env sh |
|
|
|
# todo: this script doesn't work at alll for some reason. clear_area is being called but the cursor isn't moving around correctly |
|
|
|
# This magical spell clears a specific area of the terminal window, leaving behind a clean and clear space. |
|
# Usage: cast_clear_area x y width height |
|
# The area to be cleared is specified by its top left corner (x, y) and its width and height. |
|
|
|
# Define the function to clear the specified area |
|
clear_area() { |
|
x=$1 |
|
y=$2 |
|
width=$3 |
|
height=$4 |
|
|
|
# Move the cursor to the top left corner of the area to be cleared |
|
move-cursor $x $y |
|
#echo -en "\033[$y;$xH" |
|
|
|
# Clear the area by outputting a space and then moving the cursor back |
|
i=0 |
|
while [ $i -lt $height ]; do |
|
j=0 |
|
while [ $j -lt $width ]; do |
|
echo -n " " |
|
j=$((j + 1)) |
|
done |
|
# Move the cursor back to the start of the line |
|
#echo -en "\033[$((y + i));$xH" |
|
move-cursor $x $((y + i)) |
|
i=$((i + 1)) |
|
done |
|
} |
|
|
|
# Unit test--this doesn't work yet, but I tseted clear_area manually and it works |
|
test_clear_area() { |
|
. assertions |
|
initial_x=$(fathom-cursor -x) |
|
initial_y=$(fathom-cursor -y) |
|
move_cursor 5 5 |
|
clear-area 3 3 |
|
move_cursor 5 5 |
|
assert_equal "$(tput cup 5 5; tput sc; tput cup $initial_y $initial_x)" "" |
|
move_cursor $initial_x $initial_y |
|
echo "All tests passed" |
|
} |
|
|
|
# Check if the script is being called from another script |
|
if [ "${BASH_SOURCE[0]}" = "$0" ]; then |
|
# If not, call the function and pass it the command line arguments |
|
clear_area "$@" |
|
fi |