我正在尝试将pydoctor 移植到 twisted.web.template 并遇到了一个非常基本的问题:pydoctor 使用 epydoc 将文档字符串呈现为 HTML,但我看不到在生成的页面中包含此 HTML 而不转义的方法。我能做些什么?
问问题
166 次
1 回答
2
有点故意地,没有办法在不解析的情况下将 HTML 插入页面;twisted.web.template
比 nevow 更注重产生正确的输出。
有几种方法可以解决这个问题。
- 最终,您的 HTML 将进入某种输出流。您可以简单地插入一个返回一对
Deferred
对象的渲染器,并.write
在第一个触发之后但在第二个触发之前对基础流执行 a。有点恶心,但它有效地表达了你的意图:)。 - 您可以简单地使用或类似方法将 epydoc 的输出重新解析为 HTML
XMLString
,以便twisted.web.template
正确写出。这会“浪费”一点 CPU,但在我看来,它是值得的(A)它会给 twt 的压力测试和(B)保证 - 假设这t.w.t
是正确的 - 它会给你那个您正在发出有效的 HTML。
然而,当我在写这个答案时,我意识到第 2 点通常不适用于使用当前公共 API 的 twisted.web.template 的任意 HTML。理想情况下,您可以html5lib
用来解析这些内容,然后将解析后的输入转储到您的文档树中。
如果您不介意使用私有 API,您可以将html5lib 的 SAX 支持连接到我们用来加载模板的内部 SAX 解析器。
当然,真正的解决方案是修复您已经提交的票证,因此您不必使用 Twisted 本身之外的私有 API...
于 2013-05-20T23:05:49.917 回答