【发布时间】:2013-05-19 21:15:32
【问题描述】:
我正在尝试将 pydoctor 移植到 twisted.web.template 并遇到了一个非常基本的问题:pydoctor 使用 epydoc 将文档字符串呈现为 HTML,但我看不到在生成的页面中包含此 HTML 的方法没有逃脱。我能做什么?
【问题讨论】:
标签: twisted twisted.web
我正在尝试将 pydoctor 移植到 twisted.web.template 并遇到了一个非常基本的问题:pydoctor 使用 epydoc 将文档字符串呈现为 HTML,但我看不到在生成的页面中包含此 HTML 的方法没有逃脱。我能做什么?
【问题讨论】:
标签: twisted twisted.web
有一点是故意的,没有办法在没有解析的情况下将 HTML 插入页面; twisted.web.template 比 nevow 更注重产生正确的输出。
有几种方法可以解决这个问题。
Deferred 对象的渲染器,并在第一个触发之后但在第二个触发之前对基础流执行.write。有点恶心,但它有效地表达了你的意图:)。XMLString 或类似方法简单地将epydoc 的输出重新解析为HTML,以便twisted.web.template 可以正确地写出它。这将“浪费”一点 CPU,但在我看来,对于 (A) 压力测试,它将给 t.w.t 和 (B) 保证 - 假设 t.w.t 是正确的 - 它将是值得的告诉您您正在发出有效的 HTML。然而,当我在写这个答案时,我意识到第 2 点通常不适用于具有当前公共 API 的 twisted.web.template 的任意 HTML。理想情况下,您可以使用html5lib 解析这些内容,然后将解析后的输入转储到您的文档树中。
如果您不介意使用私有 API,您可以将 html5lib's SAX support 连接到我们用来加载模板的 internal SAX parser。
当然,真正的解决方案是fix the ticket you already filed,这样就不必在Twisted 本身之外使用私有API...
【讨论】: