diff options
author | keis <keijser@gmail.com> | 2011-01-23 21:57:16 +0100 |
---|---|---|
committer | keis <keijser@gmail.com> | 2011-02-15 21:17:16 +0100 |
commit | 3594f35e565ebf210b583bcc3c4df042e0dc4191 (patch) | |
tree | 614eab8b78bc09cc16a642783064ae119ee573c9 /examples/data/scripts/uzbl-event-manager | |
parent | bed2433630f6d0d78e8b829c46b00c3ab301b512 (diff) |
move common function related to escaping to Plugin
Diffstat (limited to 'examples/data/scripts/uzbl-event-manager')
-rwxr-xr-x | examples/data/scripts/uzbl-event-manager | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/examples/data/scripts/uzbl-event-manager b/examples/data/scripts/uzbl-event-manager index 8ad3af7..d47318a 100755 --- a/examples/data/scripts/uzbl-event-manager +++ b/examples/data/scripts/uzbl-event-manager @@ -34,6 +34,7 @@ import socket import sys import time import weakref +import re from collections import defaultdict from functools import partial from glob import glob @@ -169,13 +170,16 @@ class EventHandler(object): self.callback(uzbl, *args, **kwargs) + + + class Plugin(object): '''Plugin module wrapper object.''' # Special functions exported from the Plugin instance to the # plugin namespace. special_functions = ['require', 'export', 'export_dict', 'connect', - 'connect_dict', 'logger'] + 'connect_dict', 'logger', 'unquote', 'splitquoted'] def __init__(self, parent, name, path, plugin): @@ -291,6 +295,20 @@ class Plugin(object): assert plugin in self.parent.plugins, self.logger.critical( 'plugin %r required by plugin %r' (plugin, self.name)) + @classmethod + def unquote(cls, s): + '''Removes quotation marks around strings if any and interprets + \\-escape sequences using `unicode_escape`''' + if s and s[0] == s[-1] and s[0] in ['"', "'"]: + s = s[1:-1] + return unicode(s).decode('unicode_escape') + + _splitquoted = re.compile("( |\"(?:\\\\.|[^\"])*?\"|'(?:\\\\.|[^'])*?')") + @classmethod + def splitquoted(cls, text): + '''Splits string on whitespace while respecting quotations''' + return [cls.unquote(p) for p in cls._splitquoted.split(text) if p.strip()] + class Uzbl(object): def __init__(self, parent, child_socket): |