use std::fmt;
use cfg_if::cfg_if;
cfg_if! {
if #[cfg(feature = "cursor-crossterm")] {
use crossterm::Command;
#[inline]
pub(super) fn move_down(f: &mut fmt::Formatter, y: u16) -> fmt::Result {
crossterm::cursor::MoveDown(y).write_ansi(f)
}
#[inline]
pub(super) fn move_right(f: &mut fmt::Formatter, x: u16) -> fmt::Result {
write!(f, "\r")?;
crossterm::cursor::MoveRight(x).write_ansi(f)
}
} else if #[cfg(feature = "cursor-termion")] {
#[inline]
pub(super) fn move_down(f: &mut fmt::Formatter, y: u16) -> fmt::Result {
write!(f, "{}", termion::cursor::Down(y))
}
#[inline]
pub(super) fn move_right(f: &mut fmt::Formatter, x: u16) -> fmt::Result {
write!(f, "\r")?;
write!(f, "{}", termion::cursor::Right(x))
}
} else {
#[inline]
pub(super) fn move_down(f: &mut fmt::Formatter, y: u16) -> fmt::Result {
(0..y).try_for_each(|_| writeln!(f))
}
#[inline]
pub(super) fn move_right(f: &mut fmt::Formatter, x: u16) -> fmt::Result {
(0..x).try_for_each(|_| write!(f, " "))
}
}
}