Start implementing decorator

This commit is contained in:
Florian Bruhin 2014-02-28 17:00:25 +01:00
parent d4df78b75f
commit dcc3993091
2 changed files with 23 additions and 16 deletions

View File

@ -40,23 +40,13 @@ class Command(QObject):
# we should probably have some kind of typing / argument casting for args
# this might be combined with help texts or so as well
nargs = 0
name = None
mainname = None
signal = None
count = False
split_args = True
signal = pyqtSignal(tuple)
hide = False
def __init__(self):
def __init__(self, name, split_args, hide, nargs, handler):
super().__init__()
if self.name is None:
self.name = self.__class__.__name__.lower()
if isinstance(self.name, str):
self.mainname = self.name
else:
self.mainname = self.name[0]
self.name = name
self.split_args = split_args
self.hide = hide
self.nargs = nargs
self.handler = handler
def check(self, args):
"""Check if the argument count is valid.

View File

@ -47,6 +47,23 @@ def register_all():
cmd_dict[n] = obj
def register_cmd(func, name=None, split_args=True, hide=False):
"""Decorator to register a new command handler."""
global cmd_dict
names = []
if name is None:
name = func.__name__.lower()
if isinstance(name, str):
mainname = name
names.append(name)
else:
mainname = name[0]
names += name
cmd = Command(mainname, split_args, hide, handler=func)
for name in names:
cmd_dict[name] = cmd
class SearchParser(QObject):
"""Parse qutebrowser searches.