aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/output
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/output')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/output/console_output.rs3
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs10
2 files changed, 13 insertions, 0 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs
index 254ec2ca..306f1e61 100644
--- a/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs
@@ -204,4 +204,7 @@ impl OutputInterface for ConsoleOutput {
fn get_formatter(&self) -> std::rc::Rc<std::cell::RefCell<dyn OutputFormatterInterface>> {
self.inner.get_formatter()
}
+ fn as_console_output(&self) -> Option<&dyn ConsoleOutputInterface> {
+ Some(self)
+ }
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
index 43810f13..28ebd85c 100644
--- a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
@@ -53,4 +53,14 @@ pub trait OutputInterface: std::fmt::Debug + shirabe_php_shim::AsAny {
/// Returns current output formatter instance.
fn get_formatter(&self) -> std::rc::Rc<std::cell::RefCell<dyn OutputFormatterInterface>>;
+
+ /// Downcast hook standing in for PHP's `$output instanceof ConsoleOutputInterface`
+ /// (cf. `InputInterface::as_streamable`). Only `ConsoleOutput` returns `Some`.
+ fn as_console_output(
+ &self,
+ ) -> Option<
+ &dyn crate::symfony::console::output::console_output_interface::ConsoleOutputInterface,
+ > {
+ None
+ }
}