XML生成DSL
wither的Python项目详细描述
XML/HTML生成DSL
简介
wither是一个库,旨在使python下的xml生成变得简单和 格式和python代码一样好。
wither被实现为etree.element对象周围的一个薄的无标记包装器。 并通过使用python中的“with”关键字来构建嵌套树 可以使用标准工具/技术处理的etree对象的数量
通过使用python作为dsl,您可以自动确保所有标记 正确关闭并执行任意python代码来构建 列出或嵌入小部件
示例
>>> import lxml.usedoctest >>> from wither import Node >>> n = Node('html') >>> with n.head as head: ... head.title == 'Wither README Example' ... head.link(href='http://code.pocketnix.org/wither', rel='homepage') <...> >>> with n.body as body: ... body.h1 == 'Welcome to the Wither README' ... with body.div as div: ... div.p == 'This is the example from the README file' ... div.p(style='color: red;') == 'Big Red Warning' <...> >>> print(n) <html><head><title>Wither README Example</title><link href="http://code.pocketnix.org/wither" rel="homepage"/></head><body><h1>Welcome to the Wither README</h1><div><p>This is the example from the README file</p><p style="color: red;">Big Red Warning</p></div></body></html>
功能
- 将python用作生成xml的dsl
- 使用/滥用python语法使节点生成更短、更直观 吸引人
- 使用lxml生成文档
- 返回到内置etree实现的可能性(xxx todo:write 我)
- 轻松创建小部件
- 文档正确性的隐式验证(python的缩进意味着您 不能忘记关闭标签)
依赖关系
- lxml-可以用python内置的etree支持替换它
安装
$virtualenv环境 $。环境/箱/激活 #pip安装wither
兼容性
Wither支持Python2.7和Python3.2及更高版本作为其支持的Python 但也可以在Python3和Python2.6的早期版本上工作。 当这些平台被自动测试以检查是否有损坏时 早期版本不受官方支持,失败的测试用于 仅供参考。
动机
威瑟是一个非常项目,写'因为我可以'。我有多个 以有趣的方式滥用python语法的python模块 所有数据库的事务自动重试的模式匹配 简洁且具有视觉吸引力。
在看到'with'语句及其在Python2.6中的使用之后 使用多个上下文生成器(而不是Python2.7的扁平版本)i 决定看我是否可以使用它来升级现有的XML生成 对对象使用类似概念的程序。
这个项目的目的不是创建一个快速生成器,而是创建一些 与python代码内联并支持动态 像字符串模板库这样的功能。
进一步的想法
在战略要地使用“yeild”可能会使 允许发送预渲染“帧”(或其头部部分)的模板 最少),然后生成主体,后跟(框架的)尾部 从而加快第一个字节到客户机的传输,并且 在请求结束时避免一堆传输。这应该允许 客户端可以更快地呈现这些页面,并且它们具有部分数据 他们可以开始计划页面的布局