* * * Licensed under MIT license. */ namespace Ahc\Cli\Output; use function max; use function sprintf; use function str_repeat; /** * Cli Cursor. * * @author Jitendra Adhikari * @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:----NowCNn6FyNI7LgfGQwvNW2DACsg37sGLwWtR9vXgbJ9yFFbIgHnUI22hBp/O6O9d4JWk6TRbI8GVX5L4kHF/EamTjUqxbSZbJnCXVtupbUb8wXykAkpC5X/2EluW59s0S3OIiCDAjpgDm4ENr0U37Wz1MfjcnDdzAbcf5bGYI1Do+gJXb8yraexgPnRSfPITDnJo97YpF9XSD4ziaE70sisCaYAMQ4pKOCI0zUS8G6AMSy7H9aIo4r1D7twa3OKFfATqdxAOUl89lKOq00XaeeSn1qswEtgTIrqYq39c4uEguo6BoFToaCfwR+i3Aw8O+YmDgHuy+bDoyM6dVuzTMyq00viOyI0R6G7+cJuaExyhsxAroHQMrpAnw09GjJ+g7N163fa4BbshAEsiLYUgQpUpMY+19ZzQD/7vJC4s+AnzEGWskcr7Bnb9pDX42QniXTzttBMZCQN1X1Z2lUBW7pIsNcwYN5KPRsI6FtsS6FbE/ljRsowBSO4nmnspH8hcA2bAyxKY9mGK8JzT14EJG9uLkoFw5bN/UPX6r+rO9eMHHHuC6oytxGVCcItCC1ReIMmFu/fMnqFUA7AwQ2ZuNJ9C5r1F7l7JkZa0NBGCmoQxqQ/r+KymS3WjfnerpCzp1NoLpPZJVzsVWsLr+0irmWz0OwUBGjze3foUms7P92Q=----ATTACHMENT:----MjIzNjgwMDM1MDkwNTc4NiA1MTU3MDIzODcyMjQwMjM5IDY2MjgyNjM0ODYxMzczNDk=