2016-10-13 55 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认为它不会!) –

相关问题