2012-04-16 98 views
1

假設這是很容易的,但有一個很難用換行(因此,當我在Web瀏覽器中查看源,我可以掃描頂部至底部)斯卡拉NodeSeq減少/ foldLeft用換行

打印出NodeSeq html標籤的

現在,NodeSeq被打印爲一條長線。

示例代碼:

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

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

那麼,如何獲得\ n在每個節點的結束?

謝謝

回答

4

無論您使用什麼來呈現HTML,這都是您的工作。例如,如果你使用scala.xml.PrettyPrinter,你可以這樣做:當你調用printer.format(header)

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

現在,你會得到如下:

<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") ++ _) 

但是其他的解決方案几乎總是最好。

+0

謝謝,後者,快速和骯髒,現在做的伎倆:只是想快速視覺分析輸出,在生產谷歌mod_pagespeed將壓縮整個源html到1長不可讀的行;-) – virtualeyes 2012-04-17 07:30:42