def NavigateState(self, graph_root: AnyNode, node: AnyNode): """ This function sets the state of a node depending on its (position in the) corresponding tree (-> DAG review as Tree) :param graph_root:AnyNode: tree root :param node:AnyNode: node from tree you want to update """ try: if isNotNone(node.label) and isNone(node.content): label = node.label regex = str('\\b' + label + '\\b') desired = [] tmp_desired = findall(graph_root, lambda node: node.label in label) for i in tmp_desired: match = re.findall(regex, i.label) if len(match) > 0: desired.append(i) if (len(desired) < 1): print(node.state) elif (len(desired) == 1): self.NormalState(node) else: node.followerNodes = desired[0].followerNodes node.hasFollowerNodes = desired[0].hasFollowerNodes node.hasInputNode = desired[0].hasInputNode node.state = 'navigator' node.name = 'navigator_' + str(node.id) else: self.NormalState(node) except Exception as ex: template = "An exception of type {0} occurred in [TParser.NavigateState]. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(message)
def NormalState(self, node: AnyNode): """ This function sets the state of a node in the GraphTree. :param node:AnyNode: a node """ try: if (node.is_leaf) and not (node.is_root): node.state = 'destination' node.name = 'destination_' + str(node.id) elif (node.is_root): node.state = 'root' node.name = 'root_' + str(node.id) node.parent = None else: node.state = 'subnode' node.name = 'subnode_' + str(node.id) except Exception as ex: template = "An exception of type {0} occurred in [TParser.NormalState]. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) print(message)