def testSplitWiki(self): tests = [('SomePage', ('Self', 'SomePage')), ('OtherWiki:OtherPage', ('OtherWiki', 'OtherPage')), (':OtherPage', ('', 'OtherPage')), # broken ('/OtherPage', ('Self', '/OtherPage')), # wrong interpretation ('MainPage/OtherPage', ('Self', 'MainPage/OtherPage')), ] for markup, (wikiname, pagename) in tests: assert wikiutil.split_wiki(markup) == (wikiname, pagename)
def interwiki(self, url_and_text, **kw): # TODO: maybe support [wiki:Page http://wherever/image.png] ? if len(url_and_text) == 1: url = url_and_text[0] text = None else: url, text = url_and_text # keep track of whether this is a self-reference, so links # are always shown even the page doesn't exist. is_self_reference = 0 url2 = url.lower() if url2.startswith('wiki:self:'): url = url[10:] # remove "wiki:self:" is_self_reference = 1 elif url2.startswith('wiki:'): url = url[5:] # remove "wiki:" tag, tail = wikiutil.split_wiki(url) if text is None: if tag: text = tail else: text = url url = "" elif (url.startswith(wikiutil.CHILD_PREFIX) or # fancy link to subpage [wiki:/SubPage text] is_self_reference or # [wiki:Self:LocalPage text] or [:LocalPage:text] Page(self.request, url).exists() ): # fancy link to local page [wiki:LocalPage text] return self._word_repl(url, text) wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki( self.request, url) href = wikiutil.join_wiki(wikiurl, wikitail) # check for image URL, and possibly return IMG tag if not kw.get('pretty_url', 0) and wikiutil.isPicture(wikitail): return self.formatter.image(src=href) # link to self? if wikitag is None: return self._word_repl(wikitail) return (self.formatter.interwikilink(1, tag, tail) + self.formatter.text(text) + self.formatter.interwikilink(0, tag, tail))
def interwiki(self, url_and_text, **kw): # TODO: maybe support [wiki:Page http://wherever/image.png] ? if len(url_and_text) == 1: url = url_and_text[0] text = None else: url, text = url_and_text # keep track of whether this is a self-reference, so links # are always shown even the page doesn't exist. is_self_reference = 0 url2 = url.lower() if url2.startswith("wiki:self:"): url = url[10:] # remove "wiki:self:" is_self_reference = 1 elif url2.startswith("wiki:"): url = url[5:] # remove "wiki:" tag, tail = wikiutil.split_wiki(url) if text is None: if tag: text = tail else: text = url url = "" elif ( url.startswith(wikiutil.CHILD_PREFIX) or is_self_reference # fancy link to subpage [wiki:/SubPage text] or Page(self.request, url).exists() # [wiki:Self:LocalPage text] or [:LocalPage:text] ): # fancy link to local page [wiki:LocalPage text] return self._word_repl(url, text) wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki(self.request, url) href = wikiutil.join_wiki(wikiurl, wikitail) # check for image URL, and possibly return IMG tag if not kw.get("pretty_url", 0) and wikiutil.isPicture(wikitail): return self.formatter.image(src=href) # link to self? if wikitag is None: return self._word_repl(wikitail) return ( self.formatter.interwikilink(1, tag, tail) + self.formatter.text(text) + self.formatter.interwikilink(0, tag, tail) )
def interwiki(self, url_and_text): if len(url_and_text) == 1: url = url_and_text[0] text = '' else: url, text = url_and_text text = '|' + text # keep track of whether this is a self-reference, so links # are always shown even the page doesn't exist. scheme, url = url.split(':', 1) wikiname, pagename = wikiutil.split_wiki(url) if (url.startswith(wikiutil.CHILD_PREFIX) or # fancy link to subpage [wiki:/SubPage text] Page(self.request, url).exists() ): # fancy link to local page [wiki:LocalPage text] pagename = wikiutil.url_unquote(url) pagename = self._replace_target(pagename) return '[[%s%s]]' % (pagename, text) if wikiname in ('Self', self.request.cfg.interwikiname, ''): # [wiki:Self:LocalPage text] or [:LocalPage:text] pagename = wikiutil.url_unquote(pagename) pagename = self._replace_target(pagename) return '[[%s%s]]' % (pagename, text) wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki( self.request, url) if wikitag_bad: # likely we got some /InterWiki as wikitail, we don't want that! pagename = wikiutil.url_unquote(pagename) pagename = self._replace_target(pagename) wikitail = pagename else: # good wikitail = wikiutil.url_unquote(wikitail) # link to self? if wikiutil.isPicture(wikitail): return '{{%s:%s%s}}' % (wikitag, wikitail, text) else: if ' ' not in wikitail and not text: return '%s:%s' % (wikitag, wikitail) else: return '[[%s:%s%s]]' % (wikitag, wikitail, text)
def interwiki(self, url_and_text): if len(url_and_text) == 1: url = url_and_text[0] text = '' else: url, text = url_and_text text = '|' + text # keep track of whether this is a self-reference, so links # are always shown even the page doesn't exist. scheme, url = url.split(':', 1) wikiname, pagename = wikiutil.split_wiki(url) if (url.startswith(wikiutil.CHILD_PREFIX) or # fancy link to subpage [wiki:/SubPage text] Page(self.request, url).exists()): # fancy link to local page [wiki:LocalPage text] pagename = wikiutil.url_unquote(url) pagename = self._replace_target(pagename) return '[[%s%s]]' % (pagename, text) if wikiname in ('Self', self.request.cfg.interwikiname, ''): # [wiki:Self:LocalPage text] or [:LocalPage:text] pagename = wikiutil.url_unquote(pagename) pagename = self._replace_target(pagename) return '[[%s%s]]' % (pagename, text) wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki(self.request, url) if wikitag_bad: # likely we got some /InterWiki as wikitail, we don't want that! pagename = wikiutil.url_unquote(pagename) pagename = self._replace_target(pagename) wikitail = pagename else: # good wikitail = wikiutil.url_unquote(wikitail) # link to self? if wikiutil.isPicture(wikitail): return '{{%s:%s%s}}' % (wikitag, wikitail, text) else: if ' ' not in wikitail and not text: return '%s:%s' % (wikitag, wikitail) else: return '[[%s:%s%s]]' % (wikitag, wikitail, text)
def interwiki(self, url_and_text, **kw): # TODO: maybe support [wiki:Page http://wherever/image.png] ? if len(url_and_text) == 1: url = url_and_text[0] text = None else: url, text = url_and_text url = url[5:] # remove "wiki:" if text is None: tag, tail = wikiutil.split_wiki(url) if tag: text = tail else: text = url url = "" elif config.allow_subpages and url.startswith(wikiutil.CHILD_PREFIX): # fancy link to subpage [wiki:/SubPage text] return self._word_repl(url, text) elif Page(self.request, url).exists(): # fancy link to local page [wiki:LocalPage text] return self._word_repl(url, text) wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki(self.request, url) href = wikiutil.join_wiki(wikiurl, wikitail) # check for image URL, and possibly return IMG tag if not kw.get('pretty_url', 0) and wikiutil.isPicture(wikitail): return self.formatter.image(src=href) # link to self? if wikitag is None: return self._word_repl(wikitail) return (self.formatter.interwikilink(1, wikitag, wikitail) + self.formatter.text(text) + self.formatter.interwikilink(0))