def todoHandler(data): """ Handle the command string for todos. """ indices = [] score = 100 action = 0 minArgs = 0 # Select the best trigger match from the actions list for key in actions: foundMatch = False for trigger in actions[key]['trigger']: newScore, indexList = scoreSentence(data, trigger, distancePenalty = 0.5, additionalTargetPenalty = 0, wordMatchPenalty = 0.5) if foundMatch and len(indexList) > len(indices): # A match for this action was already found. # But this trigger matches more words. indices = indexList if newScore < score: if not foundMatch: indices = indexList minArgs = actions[key]['minArgs'] foundMatch = True score = newScore action = key if not action: return data = data.split(); for i in sorted(indices, reverse=True): del data[i] if len(data) < minArgs: warning("Not enough arguments for specified command {0}".format(action)) return data = " ".join(data) globals()[action](data)
def _check_native(self, values, plugin): missing = "" for native in values: if not executable_exists(native): missing += native missing += " " if len(missing) == 0: return True else: warning("Disabeling {} - missing native executables {}".format(plugin.get_name(), missing))
def __init__(self): # plugin shoud match these requirements self._requirement_has_network = True if sys.platform == "darwin": self._requirement_platform = plugin.MACOS elif sys.platform == "win32": self._requirement_platform = plugin.WINDOWS elif sys.platform.startswith("linux"): self._requirement_platform = plugin.LINUX else: self._requirement_platform = None warning("Unsupported platform {}".format(sys.platform))
def _check_native(self, values, plugin): missing = "" for native in values: if distutils.spawn.find_executable(native) is None: missing += native missing += " " if len(missing) == 0: return True else: warning("Disabeling {} - missing native executables {}".format( plugin.get_name(), missing))
def _plugin_get_requirements(self, requirements_iter): plugin_requirements = {"platform": [], "network": [], "native": []} # parse requirements for requirement in requirements_iter: key = requirement[0] values = requirement[1] if isinstance(values, str) or isinstance(values, bool): values = [values] if key in plugin_requirements: plugin_requirements[key].extend(values) else: warning("{}={}: No supported requirement".format(key, values)) return plugin_requirements
def _parse_plugin_features(self, features_iter): plugin_features = {"case_sensitive": False, "punctuation": True} if features_iter is None: return plugin_features for feature in features_iter: key = feature[0] value = feature[1] if not isinstance(value, bool): warning("{}={}: No supported requirement".format(key, value)) if key in plugin_features: plugin_features[key] = value else: warning("{}={}: No supported requirement".format(key, value)) return plugin_features
def _plugin_get_requirements(self, requirements_iter): plugin_requirements = { "platform": [], "python": [], "network": [], "native": [] } # parse requirements for requirement in requirements_iter: key = requirement[0] values = requirement[1] if isinstance(values, str) or isinstance(values, bool): values = [values] if key in plugin_requirements: plugin_requirements[key].extend(values) else: warning("{}={}: No supportet requirement".format(key, values)) return plugin_requirements