Skip to content

Commit

Permalink
initial somewhat working version of wiki links
Browse files Browse the repository at this point in the history
  • Loading branch information
cotto committed Aug 23, 2010
1 parent 3c9a116 commit e65f5d0
Showing 1 changed file with 32 additions and 1 deletion.
33 changes: 32 additions & 1 deletion github/github.py
Expand Up @@ -5,6 +5,8 @@
from trac.env import IEnvironmentSetupParticipant
from trac.util.translation import _
from trac.db import Table, Column, Index
from trac.wiki import IWikiSyntaxProvider
from genshi.builder import tag
from hook import CommitHook

import simplejson
Expand All @@ -13,7 +15,8 @@
from git import Git

class GithubPlugin(Component):
implements(IRequestHandler, IRequestFilter, IEnvironmentSetupParticipant)
implements(IRequestHandler, IRequestFilter, IEnvironmentSetupParticipant,
IWikiSyntaxProvider)


key = Option('github', 'apitoken', '', doc = """Your GitHub API Token found here: https://github.com/account, """)
Expand Down Expand Up @@ -92,6 +95,34 @@ def _upgrade_db(self, db):

self.env.log.debug("inserted %d mappings into svn_revmap" % insert_count)

# IWikiSyntaxProvider methods
def get_wiki_syntax(self):
yield (r"r\d+", #svn revision links ("r1432")
lambda formatter, ns, match:
self._format_changeset_link(formatter, 'svn', ns, match))
yield (r"[0-9a-fA-F]{5,40}", #git hashes ("eb390eca04394")
lambda formatter, ns, match:
self._format_changeset_link(formatter, 'git', ns, match))


#pre_process_request deals with link resolution
def get_link_resolvers(self):
return []

def _format_changeset_link(self, formatter, rev_type, ns, match):
self.env.log.debug("_format_changeset_link called")
self.env.log.debug("formatter is %s" % formatter)
self.env.log.debug("rev_type is %s" % rev_type)
self.env.log.debug("ns is %s" % ns)
self.env.log.debug("match is %s" % match)
git_hash = match.group(0)
if rev_type == 'svn':
svn_rev = match.group(0).replace('r','',1)
self.env.log.debug("found svn link; using revision %s" % svn_rev)
git_hash = self._get_git_hash(svn_rev)
if git_hash:
return tag.a(match.group(0), href="%s/%s" % (formatter.href.changeset(), git_hash), class_="fake_changeset")
return match.group(0)

# IRequestHandler methods
def match_request(self, req):
Expand Down

0 comments on commit e65f5d0

Please sign in to comment.