package atd

  1. Overview
  2. Docs

Simple indentation utility for code generators

type t = [
  1. | `Line of string
  2. | `Block of t list
  3. | `Inline of t list
]

t is the type of the data to be printed.

  • `Line: single line (not indented)
  • `Block: indented sequence
  • `Inline: in-line sequence (not indented)

Example:

let l =
  [
    `Line "d";
    `Line "e";
  ]
in
[
  `Line "a";
  `Block [
    `Line "b";
    `Line "c";
  ];
  `Inline l;
  `Line "f";
]

gives:

a
  b
  c
d
e
f
val to_buffer : ?offset:int -> ?indent:int -> Buffer.t -> t list -> unit

Write to a buffer.

  • parameter offset

    defines the number of space characters to use for the left margin. Default: 0.

  • parameter indent

    defines the number of space characters to use for indenting blocks. Default: 2.

val to_string : ?offset:int -> ?indent:int -> t list -> string

Write to a string. See to_buffer for the options.

val to_channel : ?offset:int -> ?indent:int -> Pervasives.out_channel -> t list -> unit

Write to a channel. See to_buffer for the options.

val to_stdout : ?offset:int -> ?indent:int -> t list -> unit

Write to stdout. See to_buffer for the options.