OrderAnalyser.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from Utils import *
  2. import re
  3. class OrderAnalyser:
  4. def __init__(self, order):
  5. """
  6. Class used to load
  7. :param order:
  8. """
  9. self.order = order
  10. self.brain = get_brain()
  11. print "Receiver order: %s" % self.order
  12. def start(self):
  13. print self.brain
  14. for el in self.brain:
  15. # print el
  16. # print el["when"]
  17. whens = el["when"]
  18. for when in whens:
  19. brain_order = when["order"]
  20. print "order to test: %s" % brain_order
  21. if self._spelt_order_match_brain_order(brain_order):
  22. print "Order found! Run neurons: %s" % el["neurons"]
  23. neurons = el["neurons"]
  24. for neuron in neurons:
  25. for plugin, parameter in neuron.items():
  26. # capitalizes the first letter (because classes have first letter upper case)
  27. plugin = plugin.capitalize()
  28. print "Run plugin %s with parameter %s" % (plugin, parameter)
  29. mod = __import__('neurons', fromlist=[plugin])
  30. klass = getattr(mod, plugin)
  31. # run the plugin
  32. if not parameter:
  33. klass()
  34. else:
  35. klass(parameter)
  36. def _spelt_order_match_brain_order(self, order_to_test):
  37. """
  38. test if the current order match the order spelt by the user
  39. :param order_to_test:
  40. :return:
  41. """
  42. my_regex = r"\b(?=\w)" + re.escape(order_to_test) + r"\b(?!\w)"
  43. if re.search(my_regex, self.order, re.IGNORECASE):
  44. return True