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