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
2 years ago
|
#!/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
|