diff options
author | Sylvain <syt@logilab.fr> | 2007-10-26 14:48:04 +0200 |
---|---|---|
committer | Sylvain <syt@logilab.fr> | 2007-10-26 14:48:04 +0200 |
commit | a5bd21cfc4facf78c6f5f2a8b45331f52926c437 (patch) | |
tree | 9a0655acd5f0f187c91b9a9b2f6aebf174dcc3e6 /adbh.py | |
parent | c671676addcd91a405c9e580c5677be0db159036 (diff) | |
download | logilab-common-a5bd21cfc4facf78c6f5f2a8b45331f52926c437.tar.gz |
minor refactorings
Diffstat (limited to 'adbh.py')
-rw-r--r-- | adbh.py | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -27,7 +27,7 @@ class UnsupportedFunction(BadQuery): pass class metafunc(type): def __new__(mcs, name, bases, dict): - dict['name'] = name + dict['name'] = name.upper() return type.__new__(mcs, name, bases, dict) @@ -123,6 +123,15 @@ class _GenericAdvFuncHelper: 'UPPER' : 'text', } + + @classmethod + def register_function(cls, funcdef): + if isinstance(funcdef, basestring) : + funcdef = FunctionDescr(funcdef.upper()) + assert not funcdef.name in cls.FUNCTIONS, \ + '%s is already registered' % funcdef.name + cls.FUNCTIONS[funcdef.name] = funcdef + @classmethod def function_description(cls, funcname): """return the description (`FunctionDescription`) for a RQL function""" @@ -433,19 +442,14 @@ class _MyAdvFuncHelper(_GenericAdvFuncHelper): ADV_FUNC_HELPER_DIRECTORY = {'postgres': _PGAdvFuncHelper(), 'sqlite': _SqliteAdvFuncHelper(), 'mysql': _MyAdvFuncHelper(), - None: _GenericAdvFuncHelper()} + } -def register_function(driver, funcdef): - if isinstance(funcdef, basestring) : - funcdef = FunctionDescr(funcdef.upper()) - assert not funcdef.name in FUNCTIONS, \ - '%s is already registered' % funcdef.name - ADV_FUNC_HELPER_DIRECTORY[driver].FUNCTIONS[funcdef.name] = funcdef - - def get_adv_func_helper(driver): """returns an advanced function helper for the given driver""" - return ADV_FUNC_HELPER_DIRECTORY.get(driver, - ADV_FUNC_HELPER_DIRECTORY[None]) + return ADV_FUNC_HELPER_DIRECTORY[driver] + +def register_function(driver, funcdef): + ADV_FUNC_HELPER_DIRECTORY[driver].register_function(funcdef) + |