## ## Copyright (c) 2006 Jason Dillon ## ## Licensed under the Apache License, Version 2.0 (the "License"); ## you may not use this file except in compliance with the License. ## You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## ## ## $Id: //guest/jason_dillon/p4spam/main/pylib/p4spam/jiralinker.py#2 $ $Date: 2006/04/12 $ ## import re ## ## HACK: Need config to be fixed!!! ## from p4spam.config import * JIRA_ISSUE_ID_RE = re.compile(r'([^-_.]?)\b([a-zA-Z0-9]+-[0-9]+)\b([^-_.]?)') INVALID_PREFIXES = ('_', '.') INVALID_SUFFIXES = ('_', '.') # JIRA_BROWSE_URL is pulled from config def makelink(match): (before, jid, after) = match.groups() # Detect invalid prefixes s = match.start(0) if s > 0: if match.string[s - 1] in INVALID_PREFIXES: return "%s%s%s" % (before, jid, after) # Detect invalid suffixes l = len(match.string) e = match.end(0) if e < l: if match.string[e] in INVALID_SUFFIXES: return "%s%s%s" % (before, jid, after) url = JIRA_BROWSE_URL % jid return '%s%s%s' % (before, url, jid, after) def render(line): if JIRA_BROWSE_URL != None: line = JIRA_ISSUE_ID_RE.sub(makelink, line) return line