def __new__(cls, s): ns = Comment.UnresolvedReference.reescape.sub( lambda x: '\\' + x.group(0), s) ret = utf8.utf8.__new__( cls, utf8.utf8('<{0}>').format(utf8.utf8(ns))) ret.orig = s return ret
def resolve_refs_for_doc(self, doc, resolver, root): comps = self.redoc_split(utf8.utf8(doc)) components = [] for pair in comps: prefix, name, refname = pair components.append(prefix) if name is None: continue if isinstance(name, utf8.string): names = name.split('::') else: names = [name] nds = [root] for j in range(len(names)): newnds = [] for n in nds: newnds += resolver(n, names[j], j == 0) if len(newnds) == 0: break nds = newnds if len(newnds) > 0: components.append((newnds, refname)) else: components.append(Comment.UnresolvedReference(name)) doc.components = components
def qlbl_from(self, other): p = other.semantic_path_until(self) i = 0 while i < (len(p) - 1) and p[i].is_unlabeled: i += 1 return utf8.utf8('::').join(filter(lambda x: x, [q.name for q in p[i:]]))
def qlbl_from(self, other): p = other.semantic_path_until(self) i = 0 while i < (len(p) - 1) and p[i].is_unlabeled: i += 1 return utf8.utf8('::').join( filter(lambda x: x, [q.name for q in p[i:]]))
def _utf8(self): return utf8.utf8("").join([utf8.utf8(x) for x in self.components])
def __init__(self, s): self.components = [utf8.utf8(s)]
def __new__(cls, s): s = Comment.UnresolvedReference.reescape.sub(lambda x: '\\' + x.group(0), s) return utf8.utf8.__new__(cls, utf8.utf8('<{0}>').format(utf8.utf8(s)))