Attempt to verify tput exists before using it
Gitea - Tutorials/php-kilo/master This commit looks good Details

This commit is contained in:
Timothy Warren 2019-12-05 11:00:03 -05:00
parent 5ffa267e15
commit 8c159dd5bc
1 changed files with 21 additions and 4 deletions

View File

@ -10,6 +10,17 @@ use Aviat\Kilo\Enum\{
Highlight,
};
/**
* See if tput exists for fallback terminal size detection
*
* @return bool
* @codeCoverageIgnore
*/
function has_tput(): bool
{
return shell_exec('type tput') === 0;
}
// ----------------------------------------------------------------------------
// ! Terminal size
// ----------------------------------------------------------------------------
@ -29,10 +40,16 @@ function get_window_size(): array
if ($res === -1 || $ws->ws_col === 0)
{
$rows = trim(shell_exec('tput lines'));
$cols = trim(shell_exec('tput cols'));
if (has_tput())
{
$rows = trim(shell_exec('tput lines'));
$cols = trim(shell_exec('tput cols'));
return [(int)$rows, (int)$cols];
return [(int)$rows, (int)$cols];
}
// Worst-case, return an arbitrary 'standard' size
return [80, 25];
}
return [$ws->ws_row, $ws->ws_col];
@ -110,7 +127,7 @@ function is_digit(string $char): bool
*/
function is_space(string $char): bool
{
$ws = [' ', "\t", "\n", "\r", "\xa", "\xb", "\xc"];
$ws = [' ', "\t", "\n", "\r", "\v", "\f"];
return is_ascii($char) && in_array($char, $ws, TRUE);
}