我正在尝试使用FSharp.Literate来生成html页面。我正在使用Mono 4.5在Xamarin工作。我想将基本的*.fsx
脚本转换为html。我使用简单的script example from the documentation进行测试。我希望变成html的脚本看起来像这样。
(**
# First-level heading
Some more documentation using `Markdown`.
*)
(*** include: final-sample ***)
(**
## Second-level heading
With some more documentation
*)
(*** define: final-sample ***)
let helloWorld() = printfn "Hello world!"
我使用内置的NuGet管理器下载FSharp.Formatting
。它还安装了Microsoft.AspNet.Razor 2
和RazorEngine
根据文档中的示例,我编写了以下脚本,将上面的示例转换为html。我正在使用github上原始FSharp.Formatting的html模板。
#I "bin/Debug/"
#r "FSharp.Literate.dll"
#r "FSharp.Markdown.dll"
#r "FSharp.CodeFormat.dll"
open System.IO
open FSharp.Literate
let source = __SOURCE_DIRECTORY__
let baseDir = Path.Combine(source, "html/")
let file = Path.Combine(baseDir, "demo.fsx")
let output = Path.Combine(baseDir, "demo-script.html")
let template = Path.Combine(baseDir, "template.html")
Literate.ProcessScriptFile(file, template, output)
该过程运行,它确实生成一个html文件。但是,F#代码不会标记化。而不是格式良好的代码,我得到下面的例子。我错过了一些明显的东西吗
修改:
根据Tomas在下面的评论,我发现了.css和.js文件的问题。
我使用的模板有href="{root}/content/style.css" /> <script src="{root}/content/tips.js"
{root}标签是找不到css和js文件的原因。
将其更改为href="content/style.css" /> <script src="content/tips.js"
解决了问题
答案 0 :(得分:3)
我认为该库实际上产生了正确的HTML。正如您在文件末尾所看到的那样,工具提示中应显示的内容(有关helloWorld
和printfn
的类型的信息)就在那里。
问题很可能是生成的HTML文件未正确引用tips.js
和style.css
,它定义了HTML和脚本的格式以弹出工具提示。
这两个文件应该包含在NuGet包中(与默认模板一起),或者你可以找到它们on the project GitHub。