progress.indeterminate

Indeterminate progress indicator (aka a “spinner”), for the case where the progress of a long-running task cannot be determined.

active?

(active?)

Is an indeterminate progress indicator active (currently running)?

animate!

macro

(animate! & body)

Wraps the given forms in an indeterminate progress indicator. If the first form is the keyword :opts, the second form must be a map, containing any/all of these keys:

  • :frames - the frames (a sequence of Strings) to use for the indeterminate progress indicator (default is (:ascii-spinner styles))
  • :delay-in-ms - the delay (in ms) between frames (default is 100ms)
  • :fg-colour - the foregound colour of the indeterminate progress indicator (default is :default) - see the jansi-clj docs for allowed values, and prefix with bright- to get the bright equivalent
  • :bg-colour - the background colour of the indeterminate progress indicator (default is :default) - see the jansi-clj docs for allowed values, and prefix with bright- to get the bright equivalent
  • :attributes - the attributes of the indeterminate progress indicator (default is [:default]) - see the jansi-clj docs for allowed values
  • :space-after-indicator? - whether a single space character should be printed after the indeterminate progress indicator. This can be more visually appealing when using Unicode frames as it creates some separation with the cursor. (default is true)

animatef!

(animatef! f)(animatef! opts f)

Starts the indeterminate progress indicator, calls fn f (a function of zero parameters), then stops the progress indicator. Returns the result of f.

Note: the animate! macro is preferred over this function.

The optional opts map may have an/all of these keys:

  • :frames - the frames (a sequence of Strings) to use for the indeterminate progress indicator (default is (:ascii-spinner styles))
  • :delay-in-ms - the delay (in ms) between frames (default is 100ms)
  • :fg-colour - the foregound colour of the indeterminate progress indicator (default is :default) - see the jansi-clj docs for allowed values, and prefix with bright- to get the bright equivalent
  • :bg-colour - the background colour of the indeterminate progress indicator (default is :default) - see the jansi-clj docs for allowed values, and prefix with bright- to get the bright equivalent
  • :attributes - the attributes of the indeterminate progress indicator (default is [:default]) - see the jansi-clj docs for allowed values
  • :space-after-indicator? - whether a single space character should be printed after the indeterminate progress indicator. This can be more visually appealing when using Unicode frames as it creates some separation with the cursor. (default is true)

default-delay-ms

The default delay between frames (in milliseconds), if one isn’t specified.

default-style

The default indeterminate progress indicator style used, if one isn’t specified, as a keyword that has an associated entry in styles. This style is known to function on all platforms.

print

(print & more)

Schedules the given values for printing, since clojure.core/print and related output fns interfere with an active indeterminate progress indicator.

Notes:

  • output is emitted in between ‘frames’ of the progress indicator, so may not appear immediately
  • values are space delimited as in clojure.core/print
  • use clojure.core/str, clojure.core/format, etc. for finer control
  • no newlines are inserted - if message(s) are to appear on new lines the caller needs to include \n in the value(s)

state

(state)

What state is the indeterminate progress indicator currently in? One of:

  • :inactive
  • :active
  • :shutting-down

styles

A selection of predefined styles of determinate progress indicators, represented as a map. Only ASCII progress indicators are known to work reliably - other styles depend on the operating system, terminal font & encoding, phase of the moon, and how long since your dog last pooped.