Module BatOptParse.Formatter

module Formatter: sig .. end

This module contains the types and functions for implementing custom usage message formatters.


type t = {
   indent : unit -> unit; (*

Increase the indentation level.

*)
   dedent : unit -> unit; (*

Decrease the indentation level.

*)
   format_usage : string -> string; (*

Format usage string into style of this formatter.

*)
   format_heading : string -> string; (*

Format heading into style of this formatter.

*)
   format_description : string -> string; (*

Format description into style of this formatter.

*)
   format_option : char list * string list -> string list -> string option -> string; (*

Format option into style of this formatter (see explanation below).

*)
}

This is the type of a formatter. The format_option has signature format_option (snames,lnames) metavars help, where snames is a list of the short option names, lnames is a list of the long option names, metavars is a list of the metavars the option takes as arguments, and help is the help string supplied by the user.

Standard formatters
val indented_formatter : ?level:int Stdlib.ref ->
?indent:int Stdlib.ref ->
?indent_increment:int ->
?max_help_position:int ->
?width:int -> ?short_first:bool -> unit -> t

Create an "indented" formatter with the given options.

level : Reference to the current indentation level. Its value reflects changes in indentation level.
indent : Reference to the current indentation amount. Its value reflects changes in indentation level.
indent_increment : Number of columns to indent by when more indentation is required.
max_help_position : Maximum starting column for the help messages relating to each option.
width : Total with of the usage messages printed.
short_first : List all the short option names first?
val titled_formatter : ?level:int Stdlib.ref ->
?indent:int Stdlib.ref ->
?indent_increment:int ->
?max_help_position:int ->
?width:int -> ?short_first:bool -> unit -> t

Creates a titled formatter which is quite similar to the indented formatter. See OptParse.Formatter.indented_formatter for a description of the options.

Low-level formatting
val wrap : ?initial_indent:int -> ?subsequent_indent:int -> string -> int -> string list

wrap text width reflows the given text paragraph into lines of width at most width (lines may exceed this if the are single words that exceed this limit).

initial_indent : Indentation of the first line.
subsequent_indent : Indentation of the following lines.
val fill : ?initial_indent:int -> ?subsequent_indent:int -> string -> int -> string

See OptParse.Formatter.wrap.