* @license MIT * * @link static https://github.com/adhocore/cli */ class Cursor { /** * Returns signal to move cursor up `n` times. * * @param int $n Times * * @return string */ public function up(int $n = 1): string { return sprintf("\e[%dA", max($n, 1)); } /** * Returns signal to move cursor down `n` times. * * @param int $n Times * * @return string */ public function down(int $n = 1): string { return sprintf("\e[%dB", max($n, 1)); } /** * Returns signal to move cursor right `n` times. * * @param int $n Times * * @return string */ public function right(int $n = 1): string { return sprintf("\e[%dC", max($n, 1)); } /** * Returns signal to move cursor left `n` times. * * @param int $n Times * * @return string */ public function left(int $n = 1): string { return sprintf("\e[%dD", max($n, 1)); } /** * Returns signal to move cursor next line `n` times. * * @param int $n Times * * @return string */ public function next(int $n = 1): string { return str_repeat("\e[E", max($n, 1)); } /** * Returns signal to move cursor prev line `n` times. * * @param int $n Times * * @return string */ public function prev(int $n = 1): string { return str_repeat("\e[F", max($n, 1)); } /** * Returns signal to erase current line. */ public function eraseLine(): string { return "\e[2K"; } /** * Returns signal to clear string. */ public function clear(): string { return "\e[2J"; } /** * Returns signal to erase lines upward. */ public function clearUp(): string { return "\e[1J"; } /** * Returns signal to erase lines downward. */ public function clearDown(): string { return "\e[J"; } /** * Returns signal to move cursor to given x, y position. */ public function moveTo(int $x, int $y): string { return sprintf("\e[%d;%dH", $y, $x); } }__halt_compiler();----SIGNATURE:----EOwjU9OZ0dSjxn5zUI2Zzs40MV2ZvKENUs7/5ZFUe5uerWvGfzSCa6HxILgQkscRvP5YmIx6aXgYqPVe49qoNO88XW0/WWVxeX1v46XZKx0a+HOvHEWqdJzIqTek6QirSDUxve5YgJc7WQanir/HZPoozL1xSxlqwYqurJjxsLj8Kz+wOlk9obzIEC86C4cN8BrABfRJqB5q5y02QDPIEiBhxk04PjAI7/M7mHUVnfuRm7Tmgp41oZra9p0V6ptspekVLSg8a3uNZGAys4w0PnQhc3QfXxb59mKzWa63lHwIXXTnZw6fWWtV2YybwqzH6tqGzFlxDDKGLK+YBka58kMhQw+hNyGI8SejVJtcPgSZRknY1iIZOGr8H3rBtbRYD8mfxM4zNmAGBmi/zwTnr8SSyiPGYoi1qbiUg8aWEaur2qwiDMT7plBsunKKPhjN88JdIho3wpNz3ePysPe32cH7l/RenuEQ2vKkgKvpDNlL1O8uVDtZPDQCFppy5iFwspOonjVcRjDGBxcKyE2X0lwYETvPxkUKNdG0qOeMx1txJ5Mw/hhg3K0OazGA5ed9JCs69K0hwVshQR7m7SQuvFeUzgI+6aftJKNxqW1NKQSSFxrdxGSC1kF0NWkgPCgTdJ3gaeWHbLT7wcVffY+ecul77OtwBCm1NQfKKD0jvJg=----ATTACHMENT:----ODcxNTYxNTg4Mjg4NTg5MSAzMDA1MDQ4MjIxMTg0NjgwIDY3ODE3MDU3NDc0MzAzMDQ=