# HG changeset patch # User Paul Boddie # Date 1533058431 -7200 # Node ID 52163e8185bfb0ae5a59f41e07c9aab789c01c6b # Parent de69e3bc8121c8339a29ab72c2f0a4ab3020f921 Extended link translation to return default labels, useful for interwiki links. diff -r de69e3bc8121 -r 52163e8185bf moinformat/links/html.py --- a/moinformat/links/html.py Tue Jul 31 19:15:48 2018 +0200 +++ b/moinformat/links/html.py Tue Jul 31 19:33:51 2018 +0200 @@ -57,42 +57,47 @@ def translate(self, target): - "Translate the 'target' and return the rewritten string." + """ + Translate the 'target', returning a tuple containing the rewritten + target string and a suitable default label. + """ target = target.rstrip("/") # Sub-pages. if target.startswith("/"): - return self.translate_subpage(target) + return self.translate_subpage(target), None # Sibling (of ancestor) pages. if target.startswith("../"): - return self.translate_relative(target) + return self.translate_relative(target), None # Attachment or interwiki link. rewritten = self.translate_qualified_link(target) if rewritten: - return rewritten + return rewritten # includes label # Plain URL. rewritten = self.is_url(target) if rewritten: - return rewritten + return rewritten, None # Top-level pages. top_level = self.get_top_level() - return quote("%s%s" % (top_level and "%s/" % top_level or "", target)) + return quote("%s%s" % (top_level and "%s/" % top_level or "", target)), None def translate_qualified_link(self, target): """ - Translate a possible qualified link 'target', returning a rewritten - target or None if the link is not suitable. + Translate a possible qualified link 'target', returning a tuple + containing a rewritten target and a suitable default label. + + Return None if the link is not suitable. """ t = target.split(":", 1) @@ -104,13 +109,13 @@ # Attachment links. if prefix == "attachment": - return self.translate_attachment(target) + return self.translate_attachment(target), target # Interwiki links. url = self.mapping.get(prefix) if url: - return self.translate_interwiki(url, target) + return self.translate_interwiki(url, target), target return None diff -r de69e3bc8121 -r 52163e8185bf moinformat/serialisers/html/moin.py --- a/moinformat/serialisers/html/moin.py Tue Jul 31 19:15:48 2018 +0200 +++ b/moinformat/serialisers/html/moin.py Tue Jul 31 19:33:51 2018 +0200 @@ -102,11 +102,12 @@ self.out("") def start_link(self, target, nodes): + label = None if self.linker: - target = self.linker.translate(target) + target, label = self.linker.translate(target) self.out('' % escape_attr(target)) if not nodes: - self.out(escape_text(target)) + self.out(escape_text(label or target)) def end_link(self): self.out("")