PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.30.1
Independent Analytics – WordPress Analytics Plugin v1.30.1
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / console / Cursor.php
independent-analytics / vendor / symfony / console Last commit date
Attribute 3 years ago CI 3 years ago Command 3 years ago CommandLoader 3 years ago Completion 3 years ago DependencyInjection 3 years ago Descriptor 3 years ago Event 3 years ago EventListener 3 years ago Exception 3 years ago Formatter 3 years ago Helper 3 years ago Input 3 years ago Logger 3 years ago Output 3 years ago Question 3 years ago Resources 3 years ago SignalRegistry 3 years ago Style 3 years ago Tester 3 years ago Application.php 3 years ago Color.php 3 years ago ConsoleEvents.php 3 years ago Cursor.php 3 years ago SingleCommandApplication.php 3 years ago Terminal.php 3 years ago
Cursor.php
168 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace IAWP_SCOPED\Symfony\Component\Console;
12
13 use IAWP_SCOPED\Symfony\Component\Console\Output\OutputInterface;
14 /**
15 * @author Pierre du Plessis <pdples@gmail.com>
16 */
17 final class Cursor
18 {
19 private $output;
20 private $input;
21 /**
22 * @param resource|null $input
23 */
24 public function __construct(OutputInterface $output, $input = null)
25 {
26 $this->output = $output;
27 $this->input = $input ?? (\defined('STDIN') ? \STDIN : \fopen('php://input', 'r+'));
28 }
29 /**
30 * @return $this
31 */
32 public function moveUp(int $lines = 1) : self
33 {
34 $this->output->write(\sprintf("\x1b[%dA", $lines));
35 return $this;
36 }
37 /**
38 * @return $this
39 */
40 public function moveDown(int $lines = 1) : self
41 {
42 $this->output->write(\sprintf("\x1b[%dB", $lines));
43 return $this;
44 }
45 /**
46 * @return $this
47 */
48 public function moveRight(int $columns = 1) : self
49 {
50 $this->output->write(\sprintf("\x1b[%dC", $columns));
51 return $this;
52 }
53 /**
54 * @return $this
55 */
56 public function moveLeft(int $columns = 1) : self
57 {
58 $this->output->write(\sprintf("\x1b[%dD", $columns));
59 return $this;
60 }
61 /**
62 * @return $this
63 */
64 public function moveToColumn(int $column) : self
65 {
66 $this->output->write(\sprintf("\x1b[%dG", $column));
67 return $this;
68 }
69 /**
70 * @return $this
71 */
72 public function moveToPosition(int $column, int $row) : self
73 {
74 $this->output->write(\sprintf("\x1b[%d;%dH", $row + 1, $column));
75 return $this;
76 }
77 /**
78 * @return $this
79 */
80 public function savePosition() : self
81 {
82 $this->output->write("\x1b7");
83 return $this;
84 }
85 /**
86 * @return $this
87 */
88 public function restorePosition() : self
89 {
90 $this->output->write("\x1b8");
91 return $this;
92 }
93 /**
94 * @return $this
95 */
96 public function hide() : self
97 {
98 $this->output->write("\x1b[?25l");
99 return $this;
100 }
101 /**
102 * @return $this
103 */
104 public function show() : self
105 {
106 $this->output->write("\x1b[?25h\x1b[?0c");
107 return $this;
108 }
109 /**
110 * Clears all the output from the current line.
111 *
112 * @return $this
113 */
114 public function clearLine() : self
115 {
116 $this->output->write("\x1b[2K");
117 return $this;
118 }
119 /**
120 * Clears all the output from the current line after the current position.
121 */
122 public function clearLineAfter() : self
123 {
124 $this->output->write("\x1b[K");
125 return $this;
126 }
127 /**
128 * Clears all the output from the cursors' current position to the end of the screen.
129 *
130 * @return $this
131 */
132 public function clearOutput() : self
133 {
134 $this->output->write("\x1b[0J");
135 return $this;
136 }
137 /**
138 * Clears the entire screen.
139 *
140 * @return $this
141 */
142 public function clearScreen() : self
143 {
144 $this->output->write("\x1b[2J");
145 return $this;
146 }
147 /**
148 * Returns the current cursor position as x,y coordinates.
149 */
150 public function getCurrentPosition() : array
151 {
152 static $isTtySupported;
153 if (null === $isTtySupported && \function_exists('proc_open')) {
154 $isTtySupported = (bool) @\proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes);
155 }
156 if (!$isTtySupported) {
157 return [1, 1];
158 }
159 $sttyMode = \shell_exec('stty -g');
160 \shell_exec('stty -icanon -echo');
161 @\fwrite($this->input, "\x1b[6n");
162 $code = \trim(\fread($this->input, 1024));
163 \shell_exec(\sprintf('stty %s', $sttyMode));
164 \sscanf($code, "\x1b[%d;%dR", $row, $col);
165 return [$col, $row];
166 }
167 }
168