| 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 |
|---|