2016-10-13 2 views
1

Ich möchte etwas html (erzeugt aus meinem F # -Code) in ein FsLab-Journal ausgeben, aber ich kann nicht die richtige Beschwörungsformel finden, um das zu erreichen.Gibt es eine Möglichkeit, HTML direkt aus der .fsx-Datei in ein FsLab-Journal auszugeben?

Wenn ich eine Funktion in meinem Code habe, die ein HTML-Snippet zurückgibt, gibt es eine Möglichkeit, diese direkt in die Seite zu bekommen, ohne von einem <pre>-Tag umgeben zu sein?


Ich habe versucht, zum Beispiel:

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

dann

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

aber der Ausgang ist nur der HTML-Code selbst wie Ausgabe formatiert.

nahm ich einen Tauchgang in die Formatierung GH Seiten F # und fand den (*** raw ***) Befehl so auch habe ich versucht:

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

aber der Ausgang noch von den <pre> & <code> Tags umgeben wird.

Ist es möglich, einfach Roh-HTML auf diese Weise ohne das <pre> Tag zu emittieren?

Antwort

3

Wenn Sie die neueste Version verwenden, können Sie benutzerdefinierte HTML-Drucker mit fsi.AddHtmlPrinter hinzufügen. Wir müssen FsLab Dokumente verbessern, aber dies wird auch von F# Interactive Service in Atom verwendet.

raw HTML Um emittieren, können Sie so etwas wie dies in Ihrem Skript können:

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

Dann sollten Sie in der Lage sein, HTML-Knoten mit erstellen:

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

Dank Tomas, dies scheint wie genau das, was ich suchte, aber ich habe nicht fsi.AddHtmlPrinter (ich bekomme: "das Feld, Konstruktor oder Mitglied ist nicht definiert") brauche ich eine neuere Version von FSI selbst? –

+0

Ahhh - Ich habe es jetzt, diese extn: https://github.com/ionide/FsInteractiveService/blob/1868abbdb53ce3db9fd8a3714cc93501c1b5dda4/src/FsInteractiveService/Main.fs yeah? - Danke Tomas –

+2

@Stewart_R Leider weiß VS nichts über diese Methode - weshalb ich '# if' verwende, um es zu verstecken - aber FsLab journal definiert das' HAS_FSI_ADDHTMLPRINTER' Symbol und fügt das Mitglied zum 'fsi' Objekt hinzu, so dass es läuft (auch wenn VS nicht denkt!) –

Verwandte Themen