Frama-C API - Markdown
Markdown Document
Structured representation of Markdown content.
type href = | URL of string(*URL href is printed as it is.
*)| Page of string(*URL relative to a common root. During pretty-printing, if given the path of the current document, the string will be modified accordingly. For instance, when writing to
*)foo/bar.md,Page "foo/bla.md"will be output as(bla.md).| Section of string * string(*URL of an anchor within a
*)Page, see above.
Local refs and URLs
and text = inline listInline elements separated by spaces
and block = block_element listand element = | Comment of string(*markdown comment, printed <!-- like this -->
*)| Block of block| Table of table| Raw of string list(*Each element of the list is printed as-is on its own line. A blank line separates the
*)Rawnode from the next one.| H1 of text * string option| H2 of text * string option| H3 of text * string option| H4 of text * string option| H5 of text * string option| H6 of text * string option
and elements = element listFormatting Utilities
Remark: text values are list of inline values, hence you may combined with the (@) operator or with the glue ?sep utility function (see below).
val plain : string -> textPlain markdown
val emph : string -> textEmph text
val bold : string -> textBold text
val code : string -> textInline code
val image : alt:string -> file:string -> textImage
val format : ('a, Stdlib.Format.formatter, unit, text) Stdlib.format4 -> 'aPlain markdown content of the formatted string
Blocks Utilities
Remark: block values are list of block_element values, hence you may combined with the (@) operator or with the glue ?sep utility function (see below).
val codeblock : ?lang:string -> ('a, Stdlib.Format.formatter, unit, block) Stdlib.format4 -> 'acodeblock lang "...." returns a Code_block for code, written in lang with the given formatted content. The code block content placed inside an englobing hv-box, trimmed and finally split into lines.
Document Elements
Remark: elements values are list of element values, hence you may combined with the (@) operator or with the glue ?sep utility function (see below).
val rawfile : string -> elementsGet the content of a file as raw markdown.
Document Structure
val pandoc : ?title:text -> ?authors:text list -> ?date:text -> elements -> pandoc_markdownCreates a document from a list of elements and optional metadatas. Defaults are:
- title: empty
- authors: empty list
- date: current day, in ISO format
Adds a H1 header with the given title on top of the given elements. If name is not explicitly provided, the header will have as associated anchor id title
subsections header body returns a list of elements where the body's headers have been increased by one (i.e. H1 becomes H2). H5 stays at H5, though.
Other Utilities
Glue fragments, typically used for combining text, block and elements. Default separator is empty. The function is tail-recursive.
Transforms a string into an anchor name, roughly following pandoc's conventions. This function is automatically used by pretty-printers and smart constructors to normalize section names and local links.
Pretty-printers
val pp_inline : ?page:string -> Stdlib.Format.formatter -> inline -> unitval pp_text : ?page:string -> Stdlib.Format.formatter -> text -> unitval pp_block_element : ?page:string -> Stdlib.Format.formatter -> block_element -> unitval pp_block : ?page:string -> Stdlib.Format.formatter -> block -> unitval pp_element : ?page:string -> Stdlib.Format.formatter -> element -> unitval pp_elements : ?page:string -> Stdlib.Format.formatter -> elements -> unitval pp_pandoc : ?page:string -> Stdlib.Format.formatter -> pandoc_markdown -> unit