Changeset 3175

Show
Ignore:
Timestamp:
02/05/08 05:28:40 (10 months ago)
Author:
hvr
Message:

implemented syntax to recognize 40-character wide hex strings as commit sha sums and turn them into hyperlinks

Signed-Off-By: Herbert Valerio Riedel <hvr@gnu.org>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gitplugin/0.10/gitplugin/git_fs.py

    r3174 r3175  
    1717from trac.versioncontrol import Changeset, Node, Repository, \ 
    1818                                IRepositoryConnector, NoSuchChangeset, NoSuchNode 
     19from trac.wiki import IWikiSyntaxProvider 
     20from trac.util.html import escape, html 
    1921 
    2022import PyGIT 
    2123 
    2224class GitConnector(Component): 
    23         implements(IRepositoryConnector) 
     25        implements(IRepositoryConnector, IWikiSyntaxProvider) 
     26 
     27        ####################### 
     28        # IWikiSyntaxProvider 
     29 
     30        def get_wiki_syntax(self): 
     31                yield (r'\b[0-9a-fA-F]{40,40}\b',  
     32                       lambda fmt, sha, match: 
     33                               self._format_sha_link(fmt, 'changeset', sha, sha)) 
     34 
     35        def get_link_resolvers(self): 
     36                yield ('sha', self._format_sha_link) 
     37 
     38        def _format_sha_link(self, formatter, ns, sha, label, fullmatch=None): 
     39                try: 
     40                        changeset = self.env.get_repository().get_changeset(sha) 
     41                        return html.a(label, class_="changeset", 
     42                                      title=shorten_line(changeset.message), 
     43                                      href=formatter.href.changeset(sha)) 
     44                except TracError, e: 
     45                        return html.a(label, class_="missing changeset", 
     46                                      href=formatter.href.changeset(sha), 
     47                                      title=unicode(e), rel="nofollow") 
     48 
     49 
     50        ####################### 
     51        # IRepositoryConnector 
    2452 
    2553        def get_supported_types(self):