#!/bin/sh
# This spell reveals the x and y coordinates of the cursor in the terminal window.
# Define the function to calculate the position of the cursor
fathom_cursor() {
x=false
y=false
verbose=false
for arg; do
case "$arg" in
--verbose|-v) verbose=true ;;
-x) x=true ;;
-y) y=true ;;
esac
done
# Get the position of the cursor
stty -echo
printf "\033[6n"
IFS=';' read -r -d R ROW COL
stty echo
position=$(printf "%s;%s" "${ROW#*[}" "${COL%%R*}")
if $x && $y; then
if $verbose; then
printf "X: %s\n" "${position%%;*}"
printf "Y: %s\n" "${position##*;}"
else
printf "%s\n" "${position%%;*}"
printf "%s\n" "${position##*;}"
fi
else
if $x; then
[ "$verbose" = true ] && printf "X: "
printf "%s\n" "${position%%;*}"
elif $y; then
[ "$verbose" = true ] && printf "Y: "
printf "%s\n" "${position##*;}"
else
[ "$verbose" = true ] && printf "Position: "
printf "%s\n" "$position"
fi
fi
}
test_fathom_cursor() {
assert_equal "$(./fathom-cursor -x)" "$(./fathom-cursor -y)" "fathom_cursor -x and -y outputs differ"
assert_equal "$(./fathom-cursor -x -v)" "X: $(./fathom-cursor -x)" "fathom_cursor -x and -x -v outputs differ"
assert_equal "$(./fathom-cursor -y -v)" "Y: $(./fathom-cursor -y)" "fathom_cursor -y and -y -v outputs differ"
assert_equal "$(./fathom-cursor -x -y -v)" "X: $(./fathom-cursor -x)\nY: $(./fathom-cursor -y)" "fathom_cursor -x -y and -x -y -v outputs differ"
assert_equal "$(./fathom-cursor -v -x -y)" "Position: $(./fathom-cursor -x -y)" "fathom_cursor -v -x -y and -x -y outputs differ"
assert_equal "$(./fathom-cursor -v)" "$(./fathom-cursor -x -y -v)" "fathom_cursor -v and -x -y -v outputs differ"
assert_equal "$(./fathom-cursor)" "$(./fathom-cursor -x -y)" "fathom_cursor and -x -y outputs differ"
}
fathom_cursor "$@"