Frama_c_kernel.Markdown
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 list
Inline elements separated by spaces
and block = block_element list
and 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 Raw
node 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 list
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 -> text
Plain markdown
val emph : string -> text
Emph text
val bold : string -> text
Bold text
val code : string -> text
Inline code
val image : alt:string -> file:string -> text
Image
val format : ('a, Stdlib.Format.formatter, unit, text) Stdlib.format4 -> 'a
Plain markdown content of the formatted string
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 ->
'a
codeblock 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, trimed and finally splitted into lines.
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 -> elements
Get the content of a file as raw markdown.
val pandoc :
?title:text ->
?authors:text list ->
?date:text ->
elements ->
pandoc_markdown
Creates a document from a list of elements and optional metadatas. Defaults are:
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 element
s where the body
's headers have been increased by one (i.e. H1
becomes H2
). H5
stays at H5
, though.
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.
val pp_inline : ?page:string -> Stdlib.Format.formatter -> inline -> unit
val pp_text : ?page:string -> Stdlib.Format.formatter -> text -> unit
val pp_block_element :
?page:string ->
Stdlib.Format.formatter ->
block_element ->
unit
val pp_block : ?page:string -> Stdlib.Format.formatter -> block -> unit
val pp_element : ?page:string -> Stdlib.Format.formatter -> element -> unit
val pp_elements : ?page:string -> Stdlib.Format.formatter -> elements -> unit
val pp_pandoc :
?page:string ->
Stdlib.Format.formatter ->
pandoc_markdown ->
unit