FSharp.Formatting icon indicating copy to clipboard operation
FSharp.Formatting copied to clipboard

Is it possible to generate an HTML AST from Markdown?

Open njlr opened this issue 1 year ago • 1 comments

I would like to parse some Markdown, convert it to HTML, embed that in some other HTML and render it all to an HTML string.

Something like this:

// Not real code

let markdown = Markdown.Parse(content)
let markdownHtml = Markdown.toHtmlElement markdown

let page = 
  html
    []
    [
      div [] [ str "This is my header" ]
      markdownHtml
      div [] [ str "This is my footer" ]
    ]

printfn "%s" (Html.toString html)

From the docs, I can see that FSharp.Formatting supports the markdown parsing bit, and can convert to an HTML string, but does it allow one to work with the HTML AST?

The HTML model appears to be internal.

njlr avatar Jun 27 '24 17:06 njlr

No, not the HTML model. But you can use FSharp.Formatting's internal representation, the literate document type. Once you have the literate document you can manipulate it as you see fit (as you could with an HTML AST).

See https://fsprojects.github.io/FSharp.Formatting/markdown.html

F# has other purpose-built HTML libraries and my recollection from old issues about it is that dsyme wanted this library to have an HTML model that a) didn't depend on anybody else and b) didn't have anybody else depending on it. That's why it's internal.

nhirschey avatar Jun 27 '24 19:06 nhirschey