Question

I'm trying to use FSharp.Literate to produce html pages. I'm working in Xamarin using Mono 4.5. I want to turn basic *.fsx scripts into html. I am using the simple script example from the documentation for tests. The script I wish to turn into html looks like this.

(**
# 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!"

I used the built in NuGet manager to download FSharp.Formatting. It also installed Microsoft.AspNet.Razor 2 and RazorEngine

Based on the example in the documentation, I wrote the following script to turn the above example into html. I'm using the html template from the original FSharp.Formatting on github.

#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)

The process runs and it does produce an html file. However, the F# code does not tokenize. Instead of nicely formatted code, I get the example below. Am I missing something obvious?

Edit:

Based on Tomas' comment below, I found the problem with the .css and .js files. The template I used had href="{root}/content/style.css" /> <script src="{root}/content/tips.js"

The {root} tag was the reason it could not find the css and js files. Changing that to href="content/style.css" /> <script src="content/tips.js" solved the problem

screen shot of html

Was it helpful?

Solution

I think the library actually produced the correct HTML. As you can see at the end of the file, the content that should appear in the tool tips (information about the type of helloWorld and printfn) is there.

The problem is likely that the generated HTML file does not correctly reference tips.js and style.css that defines the formatting for the HTML and script to pop-up the tool tips. These two files should be included in the NuGet package (together with the default templates), or you can find them on the project GitHub.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top