From 6058727cdb417ea2bd4f51a879d23f0bfed273e4 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sat, 2 Jan 2010 01:40:26 +0000 Subject: [PATCH] Port RainCT's LP Code URL handler to a plugin --- terminatorlib/plugins/url_handlers.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/terminatorlib/plugins/url_handlers.py b/terminatorlib/plugins/url_handlers.py index b6f6bc2e..c4f728a6 100644 --- a/terminatorlib/plugins/url_handlers.py +++ b/terminatorlib/plugins/url_handlers.py @@ -5,7 +5,7 @@ import re import plugin # Every plugin you want Terminator to load *must* be listed in 'available' -available = ['LaunchpadBugURLHandler', 'APTURLHandler'] +available = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler'] class URLHandler(plugin.Plugin): """Base class for URL handlers""" @@ -31,6 +31,25 @@ class LaunchpadBugURLHandler(URLHandler): url = 'https://bugs.launchpad.net/bugs/%s' % item return(url) +class LaunchpadCodeURLHandler(URLHandler): + """Launchpad Code URL handler. If the URL looks like a Launchpad project or + branch entry then it should be transformed into a code.launchpad.net URL""" + capabilities = ['url_handler'] + handler_name = 'launchpad_code' + lpfilters = {} + lpfilters['project'] = '[a-z0-9]{1}[a-z0-9\.\-\+]+' + lpfilters['group'] = '~%s' % lpfilters['project'] + lpfilters['series'] = lpfilters['project'] + lpfilters['branch'] = '[a-zA-Z0-9]{1}[a-zA-Z0-9_+@.-]+' + + match = '\\b((lp|LP):%(project)s(/%(series)s)?|(lp|LP):%(group)s/(%(project)s|\+junk)/%(branch)s)\\b' % lpfilters + + def callback(self, url): + """Look for the number in the supplied string and return it as a URL""" + if url.startswith('lp:'): + url = url[3:] + return('https://code.launchpad.net/+branch/%s' % url) + class APTURLHandler(URLHandler): """APT URL handler. If there is a URL that looks like an apturl, handle it appropriately"""