我正在尝试将pydoctor移植到twisted.web.template并遇到一个非常基本的问题:pydoctor使用epydoc将docstrings呈现为HTML但是我看不到将这种HTML包含在HTML中的方法生成的页面没有转义。我该怎么办?
答案 0 :(得分:2)
有些故意无法在不解析的情况下将HTML插入页面; twisted.web.template
对于产生比nevow更正确的输出更为敏捷。
有很多方法可以解决这个问题。
Deferred
个对象的渲染器,并在第一个触发但在第二个之前对底层流执行.write
。有点粗,但它有效地表达了你的意图:)。XMLString
或类似内容将epydoc的输出重新解析为HTML,以便twisted.web.template
可以正确地将其写出来。这将“浪费”一点CPU,但在我看来,它是值得的(A)压力测试它将给予twt和(B)保证 - 假设t.w.t
是正确的 - 它会让你发出有效的HTML。然而,当我写这个答案时,我意识到使用twisted.web.template的当前公共API,任意HTML通常都不可能实现第2点。理想情况下,您可以使用html5lib
来解析这些内容,然后将解析后的输入转储到文档树中。
如果您不介意使用私有API,可以将html5lib's SAX support与我们用于加载模板的internal SAX parser联系起来。
当然,真正的解决方案是fix the ticket you already filed,因此您不必在Twisted之外使用私有API ...