diff options
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/helper')
5 files changed, 45 insertions, 6 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs b/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs index 656828e..e55dbce 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs @@ -1,3 +1,5 @@ +use crate::symfony::console::helper::HelperInterface; + #[derive(Debug)] pub struct FormatterHelper; @@ -10,3 +12,9 @@ impl FormatterHelper { todo!() } } + +impl HelperInterface for FormatterHelper { + fn as_any(&self) -> &dyn std::any::Any { + self + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/helper_interface.rs b/crates/shirabe-external-packages/src/symfony/console/helper/helper_interface.rs new file mode 100644 index 0000000..cf60bf0 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/helper/helper_interface.rs @@ -0,0 +1,17 @@ +use crate::symfony::console::helper::HelperSet; + +pub trait HelperInterface: std::fmt::Debug { + fn set_helper_set(&mut self, _helper_set: Option<std::rc::Rc<std::cell::RefCell<HelperSet>>>) { + todo!() + } + + fn get_helper_set(&self) -> Option<std::rc::Rc<std::cell::RefCell<HelperSet>>> { + todo!() + } + + fn get_name(&self) -> String { + todo!() + } + + fn as_any(&self) -> &dyn std::any::Any; +} diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs b/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs index 26af492..e38dbf3 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/helper_set.rs @@ -1,18 +1,23 @@ -use shirabe_php_shim::PhpMixed; +use crate::symfony::console::helper::HelperInterface; +use indexmap::IndexMap; +use std::cell::RefCell; +use std::rc::Rc; #[derive(Debug)] -pub struct HelperSet; +pub struct HelperSet { + helpers: IndexMap<String, Rc<RefCell<dyn HelperInterface>>>, +} impl HelperSet { - pub fn new(_helpers: Vec<PhpMixed>) -> Self { + pub fn new(_helpers: Vec<Rc<RefCell<dyn HelperInterface>>>) -> Self { todo!() } - pub fn get(&self, _name: &str) -> PhpMixed { + pub fn get<T: HelperInterface + 'static>(&self, _name: &str) -> Rc<RefCell<T>> { todo!() } - pub fn set(&mut self, _helper: PhpMixed, _alias: Option<&str>) { + pub fn set(&mut self, _helper: Rc<RefCell<dyn HelperInterface>>, _alias: Option<&str>) { todo!() } diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs b/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs index b31517a..191fb6e 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs @@ -1,5 +1,6 @@ pub mod formatter_helper; pub mod helper; +pub mod helper_interface; pub mod helper_set; pub mod progress_bar; pub mod question_helper; @@ -8,6 +9,7 @@ pub mod table_separator; pub use formatter_helper::*; pub use helper::*; +pub use helper_interface::*; pub use helper_set::*; pub use progress_bar::*; pub use question_helper::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs b/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs index 70a9572..c17cb6b 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs @@ -1,3 +1,4 @@ +use crate::symfony::console::helper::HelperInterface; use crate::symfony::console::input::InputInterface; use crate::symfony::console::output::OutputInterface; use crate::symfony::console::question::Question; @@ -12,7 +13,13 @@ impl QuestionHelper { _input: std::rc::Rc<std::cell::RefCell<dyn InputInterface>>, _output: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>, _question: &Question, - ) -> Option<PhpMixed> { + ) -> PhpMixed { todo!() } } + +impl HelperInterface for QuestionHelper { + fn as_any(&self) -> &dyn std::any::Any { + self + } +} |
