Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. """
  2. Contains the parent class all mods should inherit from, and some utility
  3. functions mods will need to use.
  4. """
  5.  
  6.  
  7. def pysweep_listen(mod, trigger):
  8. """
  9. Decorator for methods that need to be callable by other mods.
  10. """
  11. def decorate(f):
  12. try:
  13. f.pysweep_listening_to
  14. except:
  15. f.pysweep_listening_to = []
  16. f.pysweep_listening_to.append((mod, trigger))
  17. return f
  18. return decorate
  19.  
  20. def pysweep_trigger(f):
  21. """
  22. Decorator for methods that need to trigger mods listening to this event.
  23.  
  24. The method should return an event object which is passed to the mods
  25. listening to this function.
  26. """
  27. def _wrap(self, *args, **kwargs):
  28. event = f(_wrap)
  29. listener_events = []
  30. for listener in f.pysweep_listened_by:
  31. listener_events = listener(event)
  32. event.children = listener_events
  33. return event
  34. _wrap.pysweep_is_trigger = True
  35. return _wrap
  36.  
  37. class Mod:
  38. def pysweep_init(self, pysweep):
  39. self.pysweep = pysweep
  40.  
  41. def pysweep_triggers_init(self):
  42. self.triggers = []
  43. for func in self.__dict__.values():
  44. try:
  45. func.pysweep_is_trigger
  46. except:
  47. func.pysweep_is_trigger = False
  48.  
  49. if func.pysweep_is_trigger:
  50. self.triggers.append(func)
  51. self.trigger.pysweep_listened_by = []
  52.  
  53. def pysweep_listeners_init(self):
  54. for func in self.__dict__.values():
  55. try:
  56. func.pysweep_listening_to
  57. except:
  58. func.pysweep_listening_to = []
  59.  
  60. for mod, trigger in func.pysweep_listening_to:
  61. self.pysweep.mods[mod].pysweep_register(trigger, func)
  62.  
  63. def pysweep_register(self, trigger, func):
  64. try:
  65. self.trigger
  66. except:
  67. raise ValueError("Trigger {} does not exist".format(trigger))
  68.  
  69. if not self.trigger.pysweep_is_trigger:
  70. raise ValueError("{} is not a trigger".format(trigger))
  71.  
  72. self.trigger.pysweep_listened_by.append(func)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement