OrderAnalyser.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from Utils import *
  2. import importlib
  3. import re
  4. class OrderAnalyser:
  5. def __init__(self, order):
  6. """
  7. Class used to load
  8. :param order:
  9. """
  10. self.order = order
  11. self.brain = get_brain()
  12. print "Receiver order: %s" % self.order
  13. def start(self):
  14. print self.brain
  15. for el in self.brain:
  16. # print el
  17. # print el["when"]
  18. whens = el["when"]
  19. for when in whens:
  20. brain_order = when["order"]
  21. print "order to test: %s" % brain_order
  22. if self._spelt_order_match_brain_order(brain_order):
  23. print "Order found! Run neurons: %s" % el["neurons"]
  24. neurons = el["neurons"]
  25. for neuron in neurons:
  26. for plugin, parameter in neuron.items():
  27. print "Run plugin %s with parameter %s" % (plugin, parameter)
  28. mod = __import__('neurons', fromlist=[plugin])
  29. klass = getattr(mod, plugin)
  30. # run the plugin
  31. klass(parameter)
  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