为Python提供的handlebars.js模板。
项目描述
版权(c)2012,Canonical Ltd
此程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的第3版及以后版本下重新分配和/或修改它。
此程序的分发是希望它会有用,但没有任何保证;甚至没有适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到GNU通用公共许可证的副本。如果没有,请参阅 <https://gnu.ac.cn/licenses/>。GNU通用公共许可证版本3(请参阅文件LICENSE)。
pybars为Python提供了一个与handlebars.js兼容的模板系统。
依赖关系
Python 2.6+
PyMeta (https://launchpad.net/pymeta)
测试依赖关系
subunit (http://pypi.python.org/pypi/python-subunit)(可选)
testtools (http://pypi.python.org/pypi/testtools)
使用方法
有关模板语言的详细信息,请参阅https://handlebars.node.org.cn/文档。
将引擎翻译成Python需要稍微不同的调用约定,与JS版本略有不同。
块辅助函数接受(this, options, *args, **kwargs)
其他辅助函数接受(this, *args, **kwargs)
上下文中的闭包接受(this, *args, **kwargs)
模板如‘{{foo bar quux=1}}’将把bar作为位置参数传递,将quux作为关键字参数传递。关键字参数必须是Python中的非保留字。例如,作为关键字参数的‘print’将会失败。
具有字面布尔参数的模板,如‘{{foo true}}’,将根据需要将参数映射到Python的True或False。
为了提高效率,pybars不是传递字符串,而是传递一个list的子类('liststr'),该子类有一个__unicode__实现,返回u””。join(self)。模板辅助函数可以返回list、tuple、unicode或liststr实例。liststr的存在是为了避免在模板渲染过程中的字符串处理中的二次开销。同样,在内部循环中的辅助函数应该返回list或liststr,原因相同。
注意 liststr在js实现中取代了SafeString的位置:当返回liststr时,即使是在常规的{{}}扩展中也不会被转义。
JS实现中的'data'功能目前尚未移植,如果需要,很容易添加。类似地,stringParams功能也没有移植 - 在辅助函数调用中强制将任何内容转换为字符串。
典型用法
获取编译器
>>> from pybars import Compiler >>> compiler = Compiler()
注册您需要的任何扩展
>>> def _list(this, options, items): ... result = [u'<ul>'] ... for thing in items: ... result.append(u'<li>') ... result.extend(options['fn'](thing)) ... result.append(u'</li>') ... result.append(u'</ul>') ... return result >>> compiler.register_helper(u'list', _list)
然后编译您的模板
>>> source = u"{{#list people}}{{firstName}} {{lastName}}{{/list}}" >>> template = compiler.compile(source)
现在您可以渲染它
>>> template({ ... 'people': [ ... {'firstName': "Yehuda", 'lastName': "Katz"}, ... {'firstName': "Carl", 'lastName': "Lerche"}, ... {'firstName': "Alan", 'lastName': "Johnson"} ... ]}) <ul><li>Yehuda Katz</li><li>Carl Lerche</li><li>Alan Johnson</li></ul>
更多详细信息可以通过阅读API文档(例如pydoc pybars)找到。
安装
在具有所有依赖项的环境中运行setup.py,或将工作目录添加到您的PYTHONPATH中。
开发
上游开发发生在https://launchpad.net/pybars。要设置开发的工作区,如果依赖项不可立即获得,您可以使用./bootstrap.py创建bin/buildout,然后使用bin/py获取具有依赖项的Python解释器。
要运行测试,请使用您选择的运行器,测试套件是pybars.tests.test_suite。
例如
$ bin/py -m testtools.run pybars.tests.test_suite
pybars已启用testrepository,因此您只需执行
$ testr init $ testr run
项目详情
pybars-0.0.4.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a8197e787db051ab6418c3276ef525e45b6955de320202282256c9393d6a699d |
|
MD5 | de3e2113bb11bab8a91340f84fae0ca5 |
|
BLAKE2b-256 | 6784e61926cdb9f17576e69a7cf5a505be7dcf479765a821d95449f5d1f4b08a |