package markup

  1. Overview
  2. Docs

Markup.ml interface for monadic I/O libraries such as Lwt and Async.

This signature is implemented by Markup_lwt, with a few additions.

Each function here corresponds directly to the function in the basic module Markup that has the same name. So, see Markup for details.

The only difference is that functions here, all of which are higher-order functions, take a function as argument that returns an 'a io promise, rather than returning an already-computed value.

Promises

type 'a io

Promise type. Replaced by 'a Lwt.t in Markup_lwt.

Encodings

module Encoding : sig ... end

Asynchronous counterpart to Markup.Encoding.

XML

val parse_xml : ?report:(location -> Error.t -> unit io) -> ?encoding:Encoding.t -> ?namespace:(string -> string option) -> ?entity:(string -> string option) -> ?context:[< `Document | `Fragment ] -> (char, _) stream -> async parser
val write_xml : ?report:((signal * int) -> Error.t -> unit io) -> ?prefix:(string -> string option) -> ([< signal ], _) stream -> (char, async) stream

HTML

val parse_html : ?report:(location -> Error.t -> unit io) -> ?encoding:Encoding.t -> ?context:[< `Document | `Fragment of string ] -> (char, _) stream -> async parser
val write_html : ?escape_attribute:(string -> string) -> ?escape_text:(string -> string) -> ([< signal ], _) stream -> (char, async) stream

I/O

val fn : (unit -> char option io) -> (char, async) stream
val to_string : (char, _) stream -> string io
val to_buffer : (char, _) stream -> Stdlib.Buffer.t io

Stream manipulation

val stream : (unit -> 'a option io) -> ('a, async) stream
val next : ('a, _) stream -> 'a option io
val peek : ('a, _) stream -> 'a option io
val transform : ('a -> 'b -> ('c list * 'a option) io) -> 'a -> ('b, _) stream -> ('c, async) stream
val fold : ('a -> 'b -> 'a io) -> 'a -> ('b, _) stream -> 'a io
val map : ('a -> 'b io) -> ('a, _) stream -> ('b, async) stream
val filter : ('a -> bool io) -> ('a, _) stream -> ('a, async) stream
val filter_map : ('a -> 'b option io) -> ('a, _) stream -> ('b, async) stream
val iter : ('a -> unit io) -> ('a, _) stream -> unit io
val drain : ('a, _) stream -> unit io
val to_list : ('a, _) stream -> 'a list io
val load : ('a, _) stream -> ('a, sync) stream io

load s converts a general stream s to a synchronous stream by buffering it.

Utility

val tree : ?text:(string list -> 'a) -> ?element:(name -> (name * string) list -> 'a list -> 'a) -> ?comment:(string -> 'a) -> ?pi:(string -> string -> 'a) -> ?xml:(xml_declaration -> 'a) -> ?doctype:(doctype -> 'a) -> ([< signal ], _) stream -> 'a option io