1

假设这很简单,但很难用换行符打印出 html 标签的 NodeSeq(所以当我在 Web 浏览器中查看源代码时,我可以从上到下扫描)

照原样,NodeSeq 打印为一长行。

示例代码:

listOfPaths map ( jsNode(_) ) reduce (_++_)

def jsNode(path: String): NodeSeq =
  <script type="text/javascript" src={"/static/js/"+path}></script>

那么,如何在每个节点的末尾得到一个\n呢?

谢谢

4

1 回答 1

4

无论您使用什么来呈现 HTML,这确实是一项工作。例如,如果您使用的是scala.xml.PrettyPrinter,您可以执行以下操作:

val printer = new xml.PrettyPrinter(80, 2)
val paths = List("script-1.js", "script-2.js")
val header = <head>{paths map ( jsNode(_) ) reduce (_++_)}</head>

现在,当您调用 时printer.format(header),您将获得以下信息:

<head>
  <script type="text/javascript" src="/static/js/script-1.js"></script>
  <script type="text/javascript" src="/static/js/script-2.js"></script>
</head>

请注意,PrettyPrinter构造函数的第一个参数指定页面宽度,第二个参数指定缩进的空格数。

如果您只是想要快速而肮脏的东西,您可以在元素之间(或之后)放置一个文本节点:

paths map ( jsNode(_) ) reduce (_++ Text("\n") ++ _)

但其他解决方案几乎总是更可取的。

于 2012-04-16T22:49:19.953 回答