Source code for abacura.plugins

from __future__ import annotations

from typing import TYPE_CHECKING, Callable

from serum import inject

from abacura.plugins.actions import Action
from abacura.plugins.director import Director
from abacura.plugins.tickers import Ticker

if TYPE_CHECKING:
    from abacura.mud.options.msdp import MSDP
    from abacura.mud.session import Session
    from abacura.config import Config


[docs]class ContextProvider: def __init__(self, config: Config, session_name: str): pass
[docs] def get_injections(self) -> dict: return {}
[docs]@inject class Plugin: """Generic Plugin Class""" session: Session config: Config director: Director core_msdp: MSDP def __init__(self): # super().__init__() self.plugin_enabled = True self.director.register_object(self) self.output = self.session.output
[docs] def get_name(self): return self.__class__.__name__
[docs] def get_help(self): doc = getattr(self, '__doc__', None) return doc
[docs] def add_action(self, pattern: str, callback_fn: Callable, flags: int = 0, name: str = '', color: bool = False): act = Action(source=self, pattern=pattern, callback=callback_fn, flags=flags, name=name, color=color) self.director.action_manager.add(act)
[docs] def remove_action(self, name: str): self.director.action_manager.remove(name)
[docs] def add_ticker(self, seconds: float, callback_fn: Callable, repeats: int = 0, name: str = ''): ticker = Ticker(source=self, seconds=seconds, callback=callback_fn, repeats=repeats, name=name) self.director.ticker_manager.add(ticker)
[docs] def remove_ticker(self, name: str): self.director.ticker_manager.remove(name)
[docs] def add_substitute(self, pattern: str, repl: str, name: str = ''): pass
[docs] def remove_substitute(self, name: str): pass
[docs]def action(pattern: str, flags: int = 0, color: bool = False, priority: int = 0): def add_action(action_fn): action_fn.action_pattern = pattern action_fn.action_color = color action_fn.action_flags = flags action_fn.action_priority = priority return action_fn return add_action
[docs]def command(function=None, name: str = ''): def add_command(fn): fn.command_name = name or fn.__name__ return fn if function: return add_command(function) return add_command