# 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.
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 Pervasives.ref ->
           ?indent:int Pervasives.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 Pervasives.ref ->
           ?indent:int Pervasives.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).
Returns a list of lines making up the reformatted paragraph.
`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`.
Returns a string containing the reformatted paragraph.