zoom.component module¶
zoom.component
Components encapsulate all of the parts that are required to make a component appear on a page. This can include HTML, CSS and Javascript parts and associated libraries.
Components parts are assembled in the way that kind of part needs to be treated. For example HTML parts are simply joined together in order and returned. CSS parts on the other hand are joined together but any duplicate parts are ignored.
When a caller supplies JS or CSS as part of the component being assembled these extra parts are submitted to the system to be included in thier proper place within a response (typically a page template).
The Component object is currently experimental and is intended to be used in future releases.
-
class
zoom.component.Component(*args, **kwargs)¶ Bases:
objectcomponent of a page response
>>> c = Component() >>> c <Component: {'html': []}>
>>> c += 'test' >>> c <Component: {'html': ['test']}>
>>> c += dict(css='mycss') >>> c <Component: {'css': OrderedSet(['mycss']), 'html': ['test']}>
>>> c += dict(css='mycss') >>> c <Component: {'css': OrderedSet(['mycss']), 'html': ['test']}>
>>> c += 'test2' >>> sorted(c.parts.items()) [('css', OrderedSet(['mycss'])), ('html', ['test', 'test2'])]
>>> Component() + 'test1' + 'test2' <Component: {'html': ['test1', 'test2']}>
>>> Component() + 'test1' + dict(css='mycss') <Component: {'css': OrderedSet(['mycss']), 'html': ['test1']}>
>>> Component('test1', Component('test2')) <Component: {'html': ['test1', 'test2']}>
>>> Component( ... Component('test1', css='css1'), ... Component('test2', Component('test3', css='css3')), ... ) <Component: {'css': OrderedSet(['css1', 'css3']), 'html': ['test1', 'test2', 'test3']}>
>>> Component((Component('test1', css='css1'), Component('test2', css='css2'))) <Component: {'css': OrderedSet(['css1', 'css2']), 'html': ['test1', 'test2']}>
>>> Component(Component('test1', css='css1'), Component('test2', css='css2')) <Component: {'css': OrderedSet(['css1', 'css2']), 'html': ['test1', 'test2']}>
>>> zoom.system.parts = Component() >>> c = Component(Component('test1', css='css1'), Component('test2', css='css2')) >>> c.render() 'test1test2'
>>> page2 = \ ... Component() + \ ... '<h1>Title</h1>' + \ ... dict(css='mycss') + \ ... dict(js='myjs') + \ ... 'page body goes here' >>> t = ( ... "<Component: {'css': OrderedSet(['mycss']), " ... "'html': ['<h1>Title</h1>', 'page body goes here'], " ... "'js': OrderedSet(['myjs'])}>" ... ) >>> #print(repr(page2) + '\n' + t) >>> repr(page2) == t True
-
render()¶ renders the component
-
-
zoom.component.component¶ alias of
zoom.component.Component
-
zoom.component.compose(*args, **kwargs)¶ Compose a response - DEPRECATED
-
zoom.component.handler(request, handler, *rest)¶ Component handler