From b63f78b65df064fb69d029a2d769ce52e9ec78ee Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 15 May 2026 01:14:38 +0900 Subject: feat(port): port Event.php (Script) --- crates/shirabe/src/script/event.rs | 64 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'crates/shirabe/src/script') diff --git a/crates/shirabe/src/script/event.rs b/crates/shirabe/src/script/event.rs index 803bcfc..aeb63f0 100644 --- a/crates/shirabe/src/script/event.rs +++ b/crates/shirabe/src/script/event.rs @@ -1 +1,65 @@ //! ref: composer/src/Composer/Script/Event.php + +use indexmap::IndexMap; +use shirabe_php_shim::PhpMixed; +use crate::composer::Composer; +use crate::event_dispatcher::event::Event as BaseEvent; +use crate::io::io_interface::IOInterface; + +#[derive(Debug)] +pub struct Event { + inner: BaseEvent, + composer: Composer, + io: Box, + dev_mode: bool, + originating_event: Option>, +} + +impl Event { + pub fn new( + name: String, + composer: Composer, + io: Box, + dev_mode: bool, + args: Vec, + flags: IndexMap, + ) -> Self { + Self { + inner: BaseEvent::new(name, args, flags), + composer, + io, + dev_mode, + originating_event: None, + } + } + + pub fn get_composer(&self) -> &Composer { + &self.composer + } + + pub fn get_io(&self) -> &dyn IOInterface { + self.io.as_ref() + } + + pub fn is_dev_mode(&self) -> bool { + self.dev_mode + } + + pub fn get_originating_event(&self) -> Option<&BaseEvent> { + self.originating_event.as_deref() + } + + pub fn set_originating_event(&mut self, event: BaseEvent) -> &mut Self { + self.originating_event = Some(Box::new(self.calculate_originating_event(event))); + self + } + + fn calculate_originating_event(&self, event: BaseEvent) -> BaseEvent { + // if ($event instanceof Event && $event->getOriginatingEvent()) { + // return $this->calculateOriginatingEvent($event->getOriginatingEvent()); + // } + // + // return $event; + todo!() + } +} -- cgit v1.3.1