Source code for terminatorlib.plugins.url_handlers

# Terminator by Chris Jones <cmsj@tenshu.net?
# GPL v2 only
"""url_handlers.py - Default plugins for URL handling"""
import re
import terminatorlib.plugin as plugin

# Every plugin you want Terminator to load *must* be listed in 'AVAILABLE'
AVAILABLE = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler']

[docs]class LaunchpadBugURLHandler(plugin.URLHandler): """Launchpad Bug URL handler. If the URL looks like a Launchpad changelog closure entry... 'LP: #12345' then it should be transformed into a Launchpad Bug URL""" capabilities = ['url_handler'] handler_name = 'launchpad_bug' match = '\\b(lp|LP):?\s?#?[0-9]+(,\s*#?[0-9]+)*\\b' nameopen = "Open Launchpad bug" namecopy = "Copy bug URL"
[docs] def callback(self, url): """Look for the number in the supplied string and return it as a URL""" for item in re.findall(r'[0-9]+', url): url = 'https://bugs.launchpad.net/bugs/%s' % item return(url)
[docs]class LaunchpadCodeURLHandler(plugin.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' nameopen = "Open Launchpad branch" namecopy = "Copy branch URL" 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
[docs] 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)
[docs]class APTURLHandler(plugin.URLHandler): """APT URL handler. If there is a URL that looks like an apturl, handle it appropriately""" capabilities = ['url_handler'] handler_name = 'apturl' nameopen = "Open software manager" namecopy = "Copy package URI" match = '\\bapt:.*\\b'
[docs] def callback(self, url): """Actually we don't need to do anything for this to work""" return(url)