|
@@ -0,0 +1,49 @@
|
|
|
+from Utils import *
|
|
|
+import importlib
|
|
|
+import re
|
|
|
+
|
|
|
+
|
|
|
+class OrderAnalyser:
|
|
|
+ def __init__(self, order):
|
|
|
+ """
|
|
|
+ Class used to load
|
|
|
+ :param order:
|
|
|
+ """
|
|
|
+ self.order = order
|
|
|
+ self.brain = get_brain()
|
|
|
+ print "Receiver order: %s" % self.order
|
|
|
+
|
|
|
+ def start(self):
|
|
|
+ print self.brain
|
|
|
+
|
|
|
+ for el in self.brain:
|
|
|
+ # print el
|
|
|
+ # print el["when"]
|
|
|
+ whens = el["when"]
|
|
|
+ for when in whens:
|
|
|
+ brain_order = when["order"]
|
|
|
+ print "order to test: %s" % brain_order
|
|
|
+ if self._spelt_order_match_brain_order(brain_order):
|
|
|
+ print "Order found! Run neurons: %s" % el["neurons"]
|
|
|
+ neurons = el["neurons"]
|
|
|
+ for neuron in neurons:
|
|
|
+ for plugin, parameter in neuron.items():
|
|
|
+ print "Run plugin %s with parameter %s" % (plugin, parameter)
|
|
|
+ mod = __import__('neurons', fromlist=[plugin])
|
|
|
+ klass = getattr(mod, plugin)
|
|
|
+ # run the plugin
|
|
|
+ klass(parameter)
|
|
|
+
|
|
|
+
|
|
|
+ def _spelt_order_match_brain_order(self, order_to_test):
|
|
|
+ """
|
|
|
+ test if the current order match the order spelt by the user
|
|
|
+ :param order_to_test:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ my_regex = r"\b(?=\w)" + re.escape(order_to_test) + r"\b(?!\w)"
|
|
|
+
|
|
|
+ if re.search(my_regex, self.order, re.IGNORECASE):
|
|
|
+ return True
|
|
|
+
|
|
|
+
|