View Source Escape (escape v0.1.0)
Functionality to render ANSI escape sequences.
This module is quite similar to the Elixir module IO.ANSI
. For more info
about ANSI escape sequences,
see the IO.ANSI
documentation.
For example, the function IO.ANSI.format/1
and Escape.format/1
working in
the same way.
iex> iodata = IO.ANSI.format([:green, "hello"])
[[[[] | "[32m"], "hello"] | "[0m"]
iex> iodata == Escape.format([:green, "hello"])
true
The Escape
module adds the option :theme
to Escape.format/2
.
iex> Escape.format([:say, "hello"], theme: %{say: :green})
[[[[] | "[32m"], "hello"] | "[0m"]
In the theme are ANSI escape sequeneces allowed.
iex> Escape.format([:say, "hello"], theme: %{
...> orange: IO.ANSI.color(178),
...> say: :orange
...> })
[[[[] | "[38;5;178m"], "hello"] | "[0m"]
The theme can also contain further fromats.
iex> theme = %{
...> orange: IO.ANSI.color(5, 3, 0),
...> gray_background: IO.ANSI.color_background(59),
...> say: [:orange, :gray_background],
...> blank: " "
...> }
iex> Escape.format([:say, :blank, "hello", :blank], theme: theme)
[[[[[[], [[] | "[38;5;214m"] | "[48;5;59m"] | " "], "hello"] | " "] | "[0m"]
iex> Escape.format([:say, :blank, "hello", :blank], theme: theme, emit: false)
[[], "hello"]
See Escape.format/2
for more info.
Summary
Functions
Returns a function that accepts a string and a named sequence and returns iodata with the applied format.
Formats a chardata-like argument by converting named sequences into ANSI sequences.
Returns a function that accepts a chardata-like argument and applies
Escape.format/2
with the argument and the given opts
.
Writes ansidata
to a device
, similar to write/2
, but adds a newline at
the end.
Formats a named ANSI sequences into an ANSI sequence.
Returns a list of all available named ANSI sequences.
Writes ansidata
to a device.
Types
Functions
Returns a function that accepts a string and a named sequence and returns iodata with the applied format.
Accepts the same options as format/2
.
Examples
iex> colorizer = Escape.colorizer(theme: %{say: :green})
iex> colorizer.("hello", :say)
[[[[] | "[32m"], "hello"] | "[0m"]
@spec format( ansidata(), keyword() ) :: IO.chardata()
Formats a chardata-like argument by converting named sequences into ANSI sequences.
The named sequences are represented by atoms. The named sequences can be
extended by a map for the option :theme
.
It will also append an IO.ANSI.reset/0
to the chardata when a conversion is
performed. If you don't want this behaviour, use the option reset?: false
.
The option :emit
can be passed to enable or disable emitting ANSI codes.
When false, no ANSI codes will be emitted. This option defaults to the return
value of IO.ANSI.enabled?/0
.
Options
:theme
a map that adds ANSI codes usable in the Chardata-like argument.The searching in the theme performs a deep search.
:reset
append anIO.ANSI.reset/0
when true.:emit
enables or disables emitting ANSI codes.
Examples
iex> theme = %{
...> gainsboro: ANSI.color(4, 4, 4),
...> orange: ANSI.color(5, 3, 0),
...> aquamarine: ANSI.color(2, 5, 4),
...> error: :red,
...> debug: :orange,
...> info: :gainsboro
...> }
iex> Escape.format([:error, "error"], theme: theme)
[[[[] | "[31m"], "error"] | "[0m"]
iex> Escape.format([:info, "info"], theme: theme)
[[[[] | "[38;5;188m"], "info"] | "[0m"]
iex> Escape.format([:info, "info"], theme: theme, reset: false)
[[[] | "[38;5;188m"], "info"]
iex> Escape.format([:info, "info"], theme: theme, emit: false)
[[], "info"]
Returns a function that accepts a chardata-like argument and applies
Escape.format/2
with the argument and the given opts
.
Examples
iex> formatter = Escape.formatter(theme: %{say: :green})
iex> formatter.([:say, "hello"])
[[[[] | "[32m"], "hello"] | "[0m"]
Writes ansidata
to a device
, similar to write/2
, but adds a newline at
the end.
The device is passed to the function with the option :device
in the opts and
defaults to standard output.
The function also accepts the same options as Escape.format/2
.
Formats a named ANSI sequences into an ANSI sequence.
The named sequences are represented by atoms.
Examples
iex> Escape.sequence(:reverse)
"[7m"
@spec sequences() :: [ansicode()]
Returns a list of all available named ANSI sequences.
Writes ansidata
to a device.
The device is passed to the function with the option :device
in the opts and
defaults to standard output.
The function also accepts the same options as Escape.format/2
.