diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-05 03:57:48 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-05 03:57:48 +0900 |
| commit | be3458128ef09b3d1074b134f2822162e077e165 (patch) | |
| tree | c313e180c63f60b65485e42ed371398dcac2aa3a /crates | |
| parent | baf82ff950fef512c3e9bfed30747adce034a92a (diff) | |
| download | php-shirabe-be3458128ef09b3d1074b134f2822162e077e165.tar.gz php-shirabe-be3458128ef09b3d1074b134f2822162e077e165.tar.zst php-shirabe-be3458128ef09b3d1074b134f2822162e077e165.zip | |
feat(symfony-console): expose the input __toString on InputInterface
Every Symfony input already ports __toString as a Display impl, but callers
holding a dyn InputInterface could not reach it; forwarding a command run
across the plugin RPC boundary needs the stringified input.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates')
5 files changed, 20 insertions, 0 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/completion/completion_input.rs b/crates/shirabe-external-packages/src/symfony/console/completion/completion_input.rs index 636e794c..f8bddcee 100644 --- a/crates/shirabe-external-packages/src/symfony/console/completion/completion_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/completion/completion_input.rs @@ -294,6 +294,10 @@ impl crate::symfony::console::input::input_interface::InputInterface for Complet self.inner.get_first_argument() } + fn __to_string(&self) -> String { + self.to_string() + } + fn has_parameter_option(&self, values: PhpMixed, only_params: bool) -> bool { crate::symfony::console::input::input_interface::InputInterface::has_parameter_option( &self.inner, diff --git a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs index 59828631..fdc2dcc2 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs @@ -619,6 +619,10 @@ impl InputInterface for ArgvInput { self.inner.set_interactive(interactive) } + fn __to_string(&self) -> String { + self.to_string() + } + fn as_streamable(&self) -> Option<&dyn StreamableInputInterface> { Some(self) } diff --git a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs index eeea48ca..1ae7069d 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs @@ -366,6 +366,10 @@ impl InputInterface for ArrayInput { self.inner.set_interactive(interactive) } + fn __to_string(&self) -> String { + self.to_string() + } + fn as_streamable(&self) -> Option<&dyn StreamableInputInterface> { Some(self) } diff --git a/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs b/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs index 6ef7877e..e4beca91 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs @@ -43,6 +43,10 @@ pub trait InputInterface: std::fmt::Debug + shirabe_php_shim::AsAny { fn set_interactive(&mut self, interactive: bool); + /// PHP's `(string) $input` (the `__toString` magic method every Symfony input implements); + /// implementors forward to their `Display` impl. + fn __to_string(&self) -> String; + /// Models PHP's `$input instanceof StreamableInputInterface` check. Streamable inputs override /// this to return `Some(self)`; everything else falls back to `None`. fn as_streamable(&self) -> Option<&dyn StreamableInputInterface> { diff --git a/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs index c9871c34..3b3c3207 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs @@ -224,6 +224,10 @@ impl InputInterface for StringInput { self.inner.set_interactive(interactive) } + fn __to_string(&self) -> String { + self.to_string() + } + fn as_streamable(&self) -> Option<&dyn StreamableInputInterface> { Some(self) } |
