From 135f61f07a6faa18109071af4e688a680ff0938d Mon Sep 17 00:00:00 2001 From: Sérgio Almeida Date: Wed, 29 Jul 2009 20:07:51 +0100 Subject: Added support for string targets --- umodule.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/umodule.py b/umodule.py index cb45f2d..49ba10f 100644 --- a/umodule.py +++ b/umodule.py @@ -174,26 +174,34 @@ class Sym(Action): return options - def get_targets(self, links, option, family = []): + def get_targets(self, links, option = None, target = None, family = []): """ Builds a nested list of targets. """ parent = None for link in links: if isinstance(link, list) and not isinstance(link[0], int): - if self.get_targets(link, option, family): - if parent != None: - family.append(parent) + if self.get_targets(link, option = option, family = family, target = target): + if target == None: + if parent != None: + family.append(parent) return family else: del family[:] elif isinstance(link, list) and isinstance(link[0], int): + if option == None: - if option == link[0]: - family.append(link) - return True + if link[1].targets[link[2]] == target: + family.append(link) + return True + else: + parent = link else: - parent = link + if option == link[0]: + family.append(link) + return True + else: + parent = link def do_action(self, args): """ @@ -222,10 +230,13 @@ class Sym(Action): if len(args) != 0: if len(args) >= 1: for arg in args: - - targets = self.get_targets(links, int(arg)) - - print targets + try: + option = int(arg) + target = None + except ValueError: + option = None + target = arg + targets = self.get_targets(links, option = option, target = target) if targets != None: for target in targets: -- cgit v1.2.3-65-gdbad