Exposes the underlying implementation of line segments for testing. This API is unstable, unsafe and mostly undocumented; here be dragons etc.
module Line_buffer : sig ... end
type theta := Progress_engine__.Line_buffer.t -> event -> unit
type 'a alpha := Progress_engine__.Line_buffer.t -> event -> 'a -> unit
val noop : unit -> _ t
of_pp ~width pp is a segment that uses the supplied fixed-width pretty-printer to render the value. The pretty-printer must never emit newline characters.
conditional pred s has the same output format as
s, but is only passes reported values down to
s when they satisfy
periodic n s has the same output format as
s, but only passes reported values down to
s on every
n-th call. This is useful when progress is being reported from a hot-loop, where the cost of rendering is non-negligible.
accumulator combine zero s has the same output format
stateful f is a segment that behaves as
f () for any given render, allowing
f to initialise any display state at the start of the rendering process.
Certain segments can have their size determined dynamically by being wrapped inside one of the following boxes:
box w is a box that wraps a dynamically-sized segment and sets it to have size
w () on each tick.
box-fixed n s fixes the size of the dynamic segment
s to be
A box that takes on the current size of the terminal (or
fallback if stdout is not attached to a terminal).