anything like django sekizai
Project description
no pyramid
from stringexchange import make_exchange, function_call_emitter
exchange = make_exchange(function_call_emitter)
template = """f(a, {}, b)""".format(exchange.subscribe("args"))
p = exchange.publisher("args")
p.publish("x")
p.publish("y\n")
p.publish("z")
output = exchange.emit(template)
assert output == "f(a, x, y, z, b)"
on pyramid
file structure
onpyramid.py
top.html
onpyramid.py
# -*- coding:utf-8 -*-
## onpyramid.py
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
import os.path
def top_view(request):
js = request.string_exchange.publisher("js")
css = request.string_exchange.publisher("css")
return {"css": css, "js": js}
if __name__ == '__main__':
here = os.path.dirname(os.path.abspath(__file__))
settings = {"mako.directories": here,
"pyramid.reload_templates": True}
config = Configurator(settings=settings)
config.include("pyramid_mako")
config.include("stringexchange") # !!
config.add_mako_renderer(".html")
config.add_route('top', '/')
config.add_view(top_view, route_name='top', renderer="top.html")
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
top.html
## top.html
<html>
<head>
${request.string_exchange.subscribe("css", emit="newline", iterator="unique")}
</head>
<body>
<!-- foo widget -->
<% js.publish('<script src="base.js"></script>') %>
<% js.publish('<script src="foo.js"></script>') %>
<h1>foo</h1>
foo content
<!-- boo widget -->
<% js.publish('<script src="base.js"></script>') %>
<% js.publish('<script src="boo.js"></script>') %>
<% css.publish('<link href="widget.boo.css"></link>') %>
<h1>boo</h1>
<ul>
<li>boo0</li>
<li>boo1</li>
<li>boo2</li>
</ul>
${request.string_exchange.subscribe("js", "newline", iterator="unique")}
</body>
</html>
output
$ python demo/onpyramid.py &
$ curl http://localhost:8080
<html>
<head>
<link href="widget.boo.css"></link>
</head>
<body>
<!-- foo widget -->
<h1>foo</h1>
foo content
<!-- boo widget -->
<h1>boo</h1>
<ul>
<li>boo0</li>
<li>boo1</li>
<li>boo2</li>
</ul>
<script src="base.js"></script>
<script src="foo.js"></script>
<script src="boo.js"></script>
</body>
</html>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
stringexchange-0.1.tar.gz
(4.9 kB
view details)
File details
Details for the file stringexchange-0.1.tar.gz
.
File metadata
- Download URL: stringexchange-0.1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b68942d685993ebe9751a6d537171d3e8d39007e78b5e5ce5d1fe58a436b2cab |
|
MD5 | 388eda08c736bcc235ab1c87a504adc7 |
|
BLAKE2b-256 | dc5f4dee6823478718460a80060b57084da51dc8c799e8664091c1a053f5d62e |