server.browser.register: allow for explicit string prefixes as context types
This commit is contained in:
parent
f04297d570
commit
b4051147ee
1 changed files with 7 additions and 5 deletions
|
@ -6,14 +6,16 @@ from scopes.interfaces import IContainer, IReference, IView
|
||||||
|
|
||||||
views = {} # registry for all views: {name: {prefix: viewClass, ...}, ...}
|
views = {} # registry for all views: {name: {prefix: viewClass, ...}, ...}
|
||||||
|
|
||||||
def register(name, *contextClasses):
|
def register(name, *contextTypes):
|
||||||
"""Use as decorator: `@register(name, class, ...).
|
"""Use as decorator: `@register(name, class_or_prefix, ...).
|
||||||
class `None` means default view for all classes."""
|
No class (or `None` or `''`) means default view for all classes."""
|
||||||
def doRegister(factory):
|
def doRegister(factory):
|
||||||
implementer(IView)(factory)
|
implementer(IView)(factory)
|
||||||
nameEntry = views.setdefault(name, {})
|
nameEntry = views.setdefault(name, {})
|
||||||
for cl in contextClasses:
|
for ct in contextTypes:
|
||||||
nameEntry[cl.prefix] = factory
|
if not isinstance(ct, string):
|
||||||
|
ct = ct.prefix
|
||||||
|
nameEntry[ct] = factory
|
||||||
else:
|
else:
|
||||||
nameEntry[''] = factory
|
nameEntry[''] = factory
|
||||||
return factory
|
return factory
|
||||||
|
|
Loading…
Add table
Reference in a new issue