OrderAnalyser.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import re
  2. from core import ConfigurationManager
  3. from core.NeuroneLauncher import NeuroneLauncher
  4. class OrderAnalyser:
  5. def __init__(self, order, main_controller=None):
  6. """
  7. Class used to load
  8. :param order: spelt order
  9. :param main_controller
  10. """
  11. self.main_controller = main_controller
  12. self.order = order
  13. self.brain = ConfigurationManager.get_brain()
  14. print "Receiver order: %s" % self.order
  15. def start(self):
  16. print self.brain
  17. for el in self.brain:
  18. # print el
  19. # print el["when"]
  20. whens = el["when"]
  21. for when in whens:
  22. brain_order = when["order"]
  23. # print "order to test: %s" % brain_order
  24. if self._spelt_order_match_brain_order(brain_order):
  25. print "Order found! Run neurons: %s" % el["neurons"]
  26. neurons = el["neurons"]
  27. for neuron in neurons:
  28. NeuroneLauncher.start_neurone(neuron)
  29. # once we ran all plugin, we can start back jarvis trigger
  30. if self.main_controller is not None:
  31. self.main_controller.unpause_jarvis_trigger()
  32. def _spelt_order_match_brain_order(self, order_to_test):
  33. """
  34. test if the current order match the order spelt by the user
  35. :param order_to_test:
  36. :return:
  37. """
  38. my_regex = r"\b(?=\w)" + re.escape(order_to_test) + r"\b(?!\w)"
  39. if re.search(my_regex, self.order, re.IGNORECASE):
  40. return True
  41. return False