2016-10-13 87 views
1

我想發佈一些HTML(從我的F#代碼生成)到FsLab日記中,但似乎無法找到正確的咒語使它發生。有沒有辦法從.fsx文件直接發送HTML到FsLab日誌中?

如果我在我的代碼中有一個函數返回一個html代碼段,有沒有辦法將這個直接進入頁面而不被<pre>標籤包圍?


我都試過了,例如:

let f() = 
    """Some <b>bold</b> sample""" 
let htmlContent = f() 

然後

(*** include-value:htmlContent ***)

但輸出僅僅是HTML代碼本身一樣格式化輸出。

我花了潛入F#格式化GH的網頁,發現(*** raw ***)命令,所以我也嘗試:

(*** include-value:htmlContent, raw ***)

但輸出仍然得到由<pre> & <code>標籤包圍。

是否有可能簡單地發出原始HTML這種方式沒有<pre>標籤?

回答

3

如果您使用的是最新版本,那麼您可以使用fsi.AddHtmlPrinter添加自定義HTML打印機。我們需要改進FsLab文檔,但F# Interactive Service in Atom也使用這種文檔。

爲了發出原始的HTML,您可以在您的腳本是這樣的:

(*** hide ***) 
type Html = Html of string 
#if HAS_FSI_ADDHTMLPRINTER 
fsi.AddHtmlPrinter(fun (Html h) -> 
    seq [], h) 
#endif 

然後,你應該能夠創建HTML節點:

let b = Html("""Some <b>bold</b> sample""") 
(*** include-value:b ***) 
+0

感謝托馬斯,這似乎是隻是我在找什麼,但我似乎沒有fsi.AddHtmlPrinter(我得到:「該字段,構造函數或成員沒有定義」)我是否需要更新版本的fsi本身? –

+0

Ahhh - 我現在知道了,這個分機:https://github.com/ionide/FsInteractiveService/blob/1868abbdb53ce3db9fd8a3714cc93501c1b5dda4/src/FsInteractiveService/Main.fs是啊? - 謝謝Tomas –

+2

@Stewart_R可悲的VS不知道這種方法 - 這就是爲什麼我使用'#if'來隱藏它 - 但是FsLab日誌定義了'HAS_FSI_ADDHTMLPRINTER'符號並將該成員添加到'fsi'對象,所以它將運行(即使VS認爲它不會!) –

相關問題