def _match(self, mapping, value): for pat, what in mapping: if pat.startswith('^'): pat = pat[1:] if pat.endswith('$'): pat = pat[:-1] if self.deploy_path != '/': if self.deploy_path.endswith('/'): if pat.startswith('/'): pat = "%s%s"% (self.deploy_path, pat[1:]) else: pat = "%s%s"% (self.deploy_path, pat) else: if pat.startswith('/'): pat = "%s%s"% (self.deploy_path, pat) else: pat = "%s/%s"% (self.deploy_path, pat) if isinstance(what, basestring): what, result = utils.re_subm('^' + pat + '$', what, value) else: result = utils.re_compile('^' + pat + '$').match(value) if result: # it's a match return what, [x for x in result.groups()] return None, None
def _filter_links(self, links, text=None, text_regex=None, url=None, url_regex=None, predicate=None): predicates = [] if text is not None: predicates.append(lambda link: link.string == text) if text_regex is not None: predicates.append(lambda link: re_compile(text_regex).search(link.string or '')) if url is not None: predicates.append(lambda link: link.get('href') == url) if url_regex is not None: predicates.append(lambda link: re_compile(url_regex).search(link.get('href', ''))) if predicate: predicate.append(predicate) def f(link): for p in predicates: if not p(link): return False return True return [link for link in links if f(link)]
def _valid_session_id(self, session_id): rx = utils.re_compile('^[0-9a-fA-F]+$') return rx.match(session_id)