PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
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 2 years ago CI 2 years ago Command 2 years ago CommandLoader 2 years ago Completion 2 years ago DependencyInjection 2 years ago Descriptor 2 years ago Event 2 years ago EventListener 2 years ago Exception 2 years ago Formatter 2 years ago Helper 2 years ago Input 2 years ago Logger 2 years ago Output 2 years ago Question 2 years ago Resources 2 years ago SignalRegistry 2 years ago Style 2 years ago Tester 2 years ago Application.php 2 years ago Color.php 2 years ago ConsoleEvents.php 2 years ago Cursor.php 2 years ago SingleCommandApplication.php 2 years ago Terminal.php 2 years ago
Cursor.php
169 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 * @internal
17 */
18 final class Cursor
19 {
20 private $output;
21 private $input;
22 /**
23 * @param resource|null $input
24 */
25 public function __construct(OutputInterface $output, $input = null)
26 {
27 $this->output = $output;
28 $this->input = $input ?? (\defined('STDIN') ? \STDIN : \fopen('php://input', 'r+'));
29 }
30 /**
31 * @return $this
32 */
33 public function moveUp(int $lines = 1) : self
34 {
35 $this->output->write(\sprintf("\x1b[%dA", $lines));
36 return $this;
37 }
38 /**
39 * @return $this
40 */
41 public function moveDown(int $lines = 1) : self
42 {
43 $this->output->write(\sprintf("\x1b[%dB", $lines));
44 return $this;
45 }
46 /**
47 * @return $this
48 */
49 public function moveRight(int $columns = 1) : self
50 {
51 $this->output->write(\sprintf("\x1b[%dC", $columns));
52 return $this;
53 }
54 /**
55 * @return $this
56 */
57 public function moveLeft(int $columns = 1) : self
58 {
59 $this->output->write(\sprintf("\x1b[%dD", $columns));
60 return $this;
61 }
62 /**
63 * @return $this
64 */
65 public function moveToColumn(int $column) : self
66 {
67 $this->output->write(\sprintf("\x1b[%dG", $column));
68 return $this;
69 }
70 /**
71 * @return $this
72 */
73 public function moveToPosition(int $column, int $row) : self
74 {
75 $this->output->write(\sprintf("\x1b[%d;%dH", $row + 1, $column));
76 return $this;
77 }
78 /**
79 * @return $this
80 */
81 public function savePosition() : self
82 {
83 $this->output->write("\x1b7");
84 return $this;
85 }
86 /**
87 * @return $this
88 */
89 public function restorePosition() : self
90 {
91 $this->output->write("\x1b8");
92 return $this;
93 }
94 /**
95 * @return $this
96 */
97 public function hide() : self
98 {
99 $this->output->write("\x1b[?25l");
100 return $this;
101 }
102 /**
103 * @return $this
104 */
105 public function show() : self
106 {
107 $this->output->write("\x1b[?25h\x1b[?0c");
108 return $this;
109 }
110 /**
111 * Clears all the output from the current line.
112 *
113 * @return $this
114 */
115 public function clearLine() : self
116 {
117 $this->output->write("\x1b[2K");
118 return $this;
119 }
120 /**
121 * Clears all the output from the current line after the current position.
122 */
123 public function clearLineAfter() : self
124 {
125 $this->output->write("\x1b[K");
126 return $this;
127 }
128 /**
129 * Clears all the output from the cursors' current position to the end of the screen.
130 *
131 * @return $this
132 */
133 public function clearOutput() : self
134 {
135 $this->output->write("\x1b[0J");
136 return $this;
137 }
138 /**
139 * Clears the entire screen.
140 *
141 * @return $this
142 */
143 public function clearScreen() : self
144 {
145 $this->output->write("\x1b[2J");
146 return $this;
147 }
148 /**
149 * Returns the current cursor position as x,y coordinates.
150 */
151 public function getCurrentPosition() : array
152 {
153 static $isTtySupported;
154 if (null === $isTtySupported && \function_exists('proc_open')) {
155 $isTtySupported = (bool) @\proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes);
156 }
157 if (!$isTtySupported) {
158 return [1, 1];
159 }
160 $sttyMode = \shell_exec('stty -g');
161 \shell_exec('stty -icanon -echo');
162 @\fwrite($this->input, "\x1b[6n");
163 $code = \trim(\fread($this->input, 1024));
164 \shell_exec(\sprintf('stty %s', $sttyMode));
165 \sscanf($code, "\x1b[%d;%dR", $row, $col);
166 return [$col, $row];
167 }
168 }
169