From 4a5f074f28f649a28c1dd3a18812e4e235b7ac5f Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 10 Oct 2023 15:21:24 -0400 Subject: [PATCH] Fix some issues with search function --- src/Editor.php | 13 +++++-------- src/Enum/KeyType.php | 20 +++++++++++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Editor.php b/src/Editor.php index 89fb750..c5b066e 100644 --- a/src/Editor.php +++ b/src/Editor.php @@ -470,17 +470,14 @@ class Editor { $welcomelen = $this->terminalSize->cols; } - $padding = ($this->terminalSize->cols - $welcomelen) / 2; + $padding = (int)floor(($this->terminalSize->cols - $welcomelen) / 2); if ($padding > 0) { $this->outputBuffer .= '~'; $padding--; } - for ($i = 0; $i < $padding; $i++) - { - $this->outputBuffer .= ' '; - } + $this->outputBuffer .= str_repeat(' ', $padding); $this->outputBuffer .= substr($welcome, 0, $welcomelen); } else @@ -574,21 +571,21 @@ class Editor { $c = Terminal::readKey(); $isModifier = in_array($c, $modifiers, TRUE); - if ($c === KeyType::Escape || ($c === RawKeyCode::ENTER && $buffer !== '')) + if ($c === KeyType::Escape || ($c === KeyType::Enter && $buffer !== '')) { $this->setStatusMessage(''); if ($callback !== NULL) { $callback($buffer, $c); } - return ($c === RawKeyCode::ENTER) ? $buffer : ''; + return ($c === KeyType::Enter) ? $buffer : ''; } if ($c === KeyType::Delete || $c === KeyType::Backspace) { $buffer = substr($buffer, 0, -1); } - else if (is_ascii($c) && ( ! (is_ctrl($c) || $isModifier))) + else if (is_string($c) && is_ascii($c) && ( ! (is_ctrl($c) || $isModifier))) { $buffer .= $c; } diff --git a/src/Enum/KeyType.php b/src/Enum/KeyType.php index 0239e49..a9b64bf 100644 --- a/src/Enum/KeyType.php +++ b/src/Enum/KeyType.php @@ -10,17 +10,27 @@ use JsonSerializable; */ enum KeyType implements JsonSerializable { use Traits\EnumTrait; + use Traits\ConstList; + // ------------------------------------------------------------------------ + // Movement Keys + // ------------------------------------------------------------------------ + case ArrowUp; case ArrowDown; case ArrowLeft; case ArrowRight; - case ArrowUp; + case Home; + case End; + case PageUp; + case PageDown; + // ------------------------------------------------------------------------ + // Editing Keys + // ------------------------------------------------------------------------ case Backspace; case Delete; - case End; case Enter; + // ------------------------------------------------------------------------ + // Others + // ------------------------------------------------------------------------ case Escape; - case Home; - case PageDown; - case PageUp; } \ No newline at end of file