def onePattern(self, pattern): found = False for item in self.original: try: oldFound = found found = inevow.IQ(item).onePattern(pattern) if oldFound: raise stan.TooManyNodes('pattern', pattern) except stan.NodeNotFound: continue if not found: raise stan.NodeNotFound('pattern', pattern) return found
def onePattern(self, pattern): node = None for item in self.original: try: newNode = inevow.IQ(item).onePattern(pattern) except stan.NodeNotFound: continue else: if node is None: node = newNode else: raise stan.TooManyNodes('pattern', pattern) if node is None: raise stan.NodeNotFound('pattern', pattern) return node
def _locatePatterns(self, pattern, default, loop=True): produced = [] for item in self.original: try: for x in inevow.IQ(stan.Tag("")[item])._locatePatterns( pattern, None, loop=False): produced.append(x) yield x.clone(deep=False, clearPattern=True) except stan.NodeNotFound: continue if produced: while True: for x in produced: yield x.clone(deep=False, clearPattern=True) if default is None: raise stan.NodeNotFound("pattern", pattern) if hasattr(default, 'clone'): while True: yield default.clone(deep=False) else: while True: yield default
def onePattern(self, pattern): raise stan.NodeNotFound('pattern', pattern)
def patternGenerator(self, pattern, default=None): raise stan.NodeNotFound('pattern', pattern)