* * * 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:----hitBTqVq1r4GVIboEQ1nTXDY7vqWV1Y0DT8+xeY9GSIMfyAMlGgiePYDA6Wt1NCOs+6jrvIAtk2fP3zBevft4av0sd4T5mHbXy1bn6U9zclP/TtxN7g2jHIzRdVHnzf+Dc3v2bC9/tUuA633n2Ib2O4Oa7gByXhqj7MMs2GeAF43y1RDujRVxMqwijqkcD340KRMYNrQ/vW3Ju885wXq26c1/ho6GZ0RBHt3TB8nNqdb9FY4bSRPuRMmOzreicEfL15SCh2puAwOS/FhMTFIJzpSXiE9r9f4UhI24A+z25m/l2v/HGgzqeFs3YP/fjEIebgVPrE8Fa19j8aBd4cqLbpvKtDkNikg2kcK6CzAyjxxcJrNDH6srad0lxcv5+dx47GtbbBORu+FKcNHS/gAEI6h7nFvdk041M/dF3hzTFM275j+ky/ImK1rhGVou3wO8ls866YZ0sCxRm9vyZQFiisnJ8dIx4GPcI1XHkq79vNf9gOvyZ7J0VyjwyBvGXMbphblTqAUE67y8hm5i5Tq19sO2MiM1kEm4xTZUh0QPUERJV0qXK8f8VecMAcxDfp4JovQEFcYnyzrNNu4c+etkqSStJV0yrIo+jGCyPHMfckfBgfpd7nfWZdj141tL4Y5/KOHX6QxDPcpABTkaG6ZUFB5n/w9eZMueNXotWQTgJA=----ATTACHMENT:----MjE1NDYzNDIyMjgzNjYxMyAzNDI1NDE3OTU1ODYwMzc5IDYzNjk0NDU5OTQ3NDk0OTY=