Edgewall Software

Ticket #7386: t7386-alt-shref-r7606.diff

File t7386-alt-shref-r7606.diff, 2.5 KB (added by cboos, 23 months ago)

Add alternative syntax for short links: <realm_or_protocol:target>

  • trac/wiki/tests/wiki-tests.txt

     
    152152Thing [link:1 number 1], CS[link:1], [link:bar] 
    153153</p> 
    154154------------------------------ 
     155============================== Link resolvers, alternative short form 
     156<link:1> 
     157 
     158Thing<link:2 and (3)> 
     159------------------------------ 
     160<p> 
     161&lt;<a class="odd resolver" href="/thing/1">link:1</a>&gt; 
     162</p> 
     163<p> 
     164Thing&lt;<a class="text resolver" href="/stuff/2%20and%20%283%29">link:2 and (3)</a>&gt; 
     165</p> 
     166------------------------------ 
     167============================== Escaping links resolvers, alternative short form 
     168!<link:1> 
     169------------------------------ 
     170<p> 
     171&lt;link:1&gt; 
     172</p> 
     173------------------------------ 
    155174============================== Link resolvers, long form with label 
    156175[link:1 thing one], [http://www.edgewall.com/ edgewall] 
    157176------------------------------ 
  • trac/wiki/parser.py

     
    7777        r"(?P<email>!?%s)" % EMAIL_LOOKALIKE_PATTERN, 
    7878        # > ... 
    7979        r"(?P<citation>^(?P<cdepth>>(?: *>)*))", 
     80        # <wiki:Trac links> 
     81        r"(?P<shref>!?<(?P<sns>%s):(?P<stgt>[^>]+)>)" % LINK_SCHEME, 
    8082        # &, < and > to &amp;, &lt; and &gt; 
    8183        r"(?P<htmlescape>[&<>])", 
    8284        # wiki:TracLinks 
    83         r"(?P<shref>!?((?P<sns>%s):(?P<stgt>%s|%s(?:%s*%s)?)))" \ 
     85        r"(?P<shref2>!?((?P<sns2>%s):(?P<stgt2>%s|%s(?:%s*%s)?)))" \ 
    8486        % (LINK_SCHEME, QUOTED_STRING, 
    8587           SHREF_TARGET_FIRST, SHREF_TARGET_MIDDLE, SHREF_TARGET_LAST), 
    8688        # [wiki:TracLinks with optional label] or [/relative label] 
  • trac/wiki/formatter.py

     
    353353    def _shref_formatter(self, match, fullmatch): 
    354354        ns = fullmatch.group('sns') 
    355355        target = self._unquote(fullmatch.group('stgt')) 
     356        match = match[1:-1] 
     357        return '&lt;%s&gt;' % \ 
     358                self._make_link(ns, target, match, match, fullmatch) 
     359 
     360    def _shref2_formatter(self, match, fullmatch): 
     361        ns = fullmatch.group('sns2') 
     362        target = self._unquote(fullmatch.group('stgt2')) 
    356363        return self._make_link(ns, target, match, match, fullmatch) 
    357364 
    358365    def _lhref_formatter(self, match, fullmatch):