melobot.protocols.console.adapter.event 源代码
from __future__ import annotations
from typing_extensions import Generic, cast
from melobot.adapter import Event as RootEvent
from melobot.adapter import TextEvent as RootTextEvent
from melobot.adapter import content
from ..const import PROTOCOL_IDENTIFIER
from ..io.model import InputData, InputDataT, InputType, StdinInputData
[文档]
class Event(RootEvent, Generic[InputDataT]):
def __init__(self, data: InputData) -> None:
super().__init__(PROTOCOL_IDENTIFIER)
self.type = data.type
self.raw = data
def __repr__(self) -> str:
return f"{self.__class__.__name__}(type={self.type})"
@classmethod
def resolve(cls, data: InputDataT) -> Event:
if data.type is InputType.STDIN:
return StdinEvent.resolve(cast(StdinInputData, data))
return cls(data)
[文档]
def is_stdin(self) -> bool:
return self.type is InputType.STDIN
[文档]
class StdinEvent(RootTextEvent, Event[StdinInputData]):
def __init__(self, data: StdinInputData) -> None:
super().__init__(data)
self.text = data.content
self.textlines = self.text.split("\n")
self.contents = (content.TextContent(self.text),)
def __repr__(self) -> str:
return f"{self.__class__.__name__}({self.text!r})"
@classmethod
def resolve(cls, data: StdinInputData) -> StdinEvent:
return cls(data)