TermUI.ANSI (TermUI v0.2.0)
View SourceANSI escape sequence generation for terminal control.
This module provides functions to generate ANSI escape sequences for cursor control, screen manipulation, colors, styles, and special terminal modes. All functions return iodata for efficient concatenation.
Summary
Functions
Generates background color sequence for basic 16-color mode.
Generates background color sequence for 256-color palette.
Generates background color sequence for true-color RGB.
Generates blink text attribute sequence.
Generates bold text attribute sequence.
Generates clear entire line sequence.
Generates clear line from cursor to end sequence.
Generates clear line from beginning to cursor sequence.
Generates clear entire screen sequence.
Generates clear screen from cursor to end sequence.
Generates clear screen from beginning to cursor sequence.
Generates cursor back (left) movement sequence.
Generates cursor down movement sequence.
Generates cursor forward (right) movement sequence.
Generates cursor hide sequence.
Generates absolute cursor positioning sequence.
Generates cursor show sequence.
Generates cursor up movement sequence.
Generates dim text attribute sequence.
Generates disable application cursor keys mode sequence.
Generates disable bracketed paste mode sequence.
Generates disable focus event reporting sequence.
Generates disable mouse tracking sequence for the specified mode.
Generates disable SGR mouse mode sequence.
Generates enable application cursor keys mode sequence.
Generates enable bracketed paste mode sequence.
Generates enable focus event reporting sequence.
Generates enable mouse tracking sequence for the specified mode.
Generates enable SGR mouse mode sequence for extended coordinate encoding.
Generates enter alternate screen buffer sequence.
Generates foreground color sequence for basic 16-color mode.
Generates foreground color sequence for 256-color palette.
Generates foreground color sequence for true-color RGB.
Generates combined style sequence from a list of attributes.
Generates hidden text attribute sequence.
Generates italic text attribute sequence.
Generates leave alternate screen buffer sequence.
Generates reset all styles sequence.
Alias for reset/0.
Generates restore cursor position sequence.
Generates reverse video text attribute sequence.
Generates save cursor position sequence.
Generates scroll down sequence.
Generates scroll up sequence.
Generates set scroll region sequence.
Generates strikethrough text attribute sequence.
Generates underline text attribute sequence.
Functions
Generates background color sequence for basic 16-color mode.
Examples
iex> TermUI.ANSI.background(:blue) |> IO.iodata_to_binary()
"\e[44m"
iex> TermUI.ANSI.background(:bright_red) |> IO.iodata_to_binary()
"\e[101m"
@spec background_256(0..255) :: iodata()
Generates background color sequence for 256-color palette.
Examples
iex> TermUI.ANSI.background_256(196) |> IO.iodata_to_binary()
"\e[48;5;196m"
@spec background_rgb(0..255, 0..255, 0..255) :: iodata()
Generates background color sequence for true-color RGB.
Examples
iex> TermUI.ANSI.background_rgb(255, 128, 0) |> IO.iodata_to_binary()
"\e[48;2;255;128;0m"
@spec blink() :: iodata()
Generates blink text attribute sequence.
@spec bold() :: iodata()
Generates bold text attribute sequence.
@spec clear_line() :: iodata()
Generates clear entire line sequence.
Examples
iex> TermUI.ANSI.clear_line() |> IO.iodata_to_binary()
"\e[2K"
@spec clear_line_from_cursor() :: iodata()
Generates clear line from cursor to end sequence.
Examples
iex> TermUI.ANSI.clear_line_from_cursor() |> IO.iodata_to_binary()
"\e[K"
@spec clear_line_to_cursor() :: iodata()
Generates clear line from beginning to cursor sequence.
Examples
iex> TermUI.ANSI.clear_line_to_cursor() |> IO.iodata_to_binary()
"\e[1K"
@spec clear_screen() :: iodata()
Generates clear entire screen sequence.
Examples
iex> TermUI.ANSI.clear_screen() |> IO.iodata_to_binary()
"\e[2J"
@spec clear_screen_from_cursor() :: iodata()
Generates clear screen from cursor to end sequence.
Examples
iex> TermUI.ANSI.clear_screen_from_cursor() |> IO.iodata_to_binary()
"\e[0J"
@spec clear_screen_to_cursor() :: iodata()
Generates clear screen from beginning to cursor sequence.
Examples
iex> TermUI.ANSI.clear_screen_to_cursor() |> IO.iodata_to_binary()
"\e[1J"
@spec cursor_back(pos_integer()) :: iodata()
Generates cursor back (left) movement sequence.
Examples
iex> TermUI.ANSI.cursor_back(3) |> IO.iodata_to_binary()
"\e[3D"
iex> TermUI.ANSI.cursor_back(1) |> IO.iodata_to_binary()
"\e[D"
@spec cursor_down(pos_integer()) :: iodata()
Generates cursor down movement sequence.
Examples
iex> TermUI.ANSI.cursor_down(3) |> IO.iodata_to_binary()
"\e[3B"
iex> TermUI.ANSI.cursor_down(1) |> IO.iodata_to_binary()
"\e[B"
@spec cursor_forward(pos_integer()) :: iodata()
Generates cursor forward (right) movement sequence.
Examples
iex> TermUI.ANSI.cursor_forward(3) |> IO.iodata_to_binary()
"\e[3C"
iex> TermUI.ANSI.cursor_forward(1) |> IO.iodata_to_binary()
"\e[C"
@spec cursor_hide() :: iodata()
Generates cursor hide sequence.
Examples
iex> TermUI.ANSI.cursor_hide() |> IO.iodata_to_binary()
"\e[?25l"
@spec cursor_position(pos_integer(), pos_integer()) :: iodata()
Generates absolute cursor positioning sequence.
Row and column are 1-indexed.
Examples
iex> TermUI.ANSI.cursor_position(5, 10) |> IO.iodata_to_binary()
"\e[5;10H"
iex> TermUI.ANSI.cursor_position(1, 1) |> IO.iodata_to_binary()
"\e[1;1H"
@spec cursor_show() :: iodata()
Generates cursor show sequence.
Examples
iex> TermUI.ANSI.cursor_show() |> IO.iodata_to_binary()
"\e[?25h"
@spec cursor_up(pos_integer()) :: iodata()
Generates cursor up movement sequence.
Examples
iex> TermUI.ANSI.cursor_up(3) |> IO.iodata_to_binary()
"\e[3A"
iex> TermUI.ANSI.cursor_up(1) |> IO.iodata_to_binary()
"\e[A"
@spec dim() :: iodata()
Generates dim text attribute sequence.
@spec disable_app_cursor() :: iodata()
Generates disable application cursor keys mode sequence.
Examples
iex> TermUI.ANSI.disable_app_cursor() |> IO.iodata_to_binary()
"\e[?1l"
@spec disable_bracketed_paste() :: iodata()
Generates disable bracketed paste mode sequence.
Examples
iex> TermUI.ANSI.disable_bracketed_paste() |> IO.iodata_to_binary()
"\e[?2004l"
@spec disable_focus_events() :: iodata()
Generates disable focus event reporting sequence.
Examples
iex> TermUI.ANSI.disable_focus_events() |> IO.iodata_to_binary()
"\e[?1004l"
@spec disable_mouse_tracking(:x10 | :normal | :button | :all) :: iodata()
Generates disable mouse tracking sequence for the specified mode.
Examples
iex> TermUI.ANSI.disable_mouse_tracking(:x10) |> IO.iodata_to_binary()
"\e[?9l"
iex> TermUI.ANSI.disable_mouse_tracking(:all) |> IO.iodata_to_binary()
"\e[?1003l"
@spec disable_sgr_mouse() :: iodata()
Generates disable SGR mouse mode sequence.
Examples
iex> TermUI.ANSI.disable_sgr_mouse() |> IO.iodata_to_binary()
"\e[?1006l"
@spec enable_app_cursor() :: iodata()
Generates enable application cursor keys mode sequence.
Examples
iex> TermUI.ANSI.enable_app_cursor() |> IO.iodata_to_binary()
"\e[?1h"
@spec enable_bracketed_paste() :: iodata()
Generates enable bracketed paste mode sequence.
Examples
iex> TermUI.ANSI.enable_bracketed_paste() |> IO.iodata_to_binary()
"\e[?2004h"
@spec enable_focus_events() :: iodata()
Generates enable focus event reporting sequence.
Examples
iex> TermUI.ANSI.enable_focus_events() |> IO.iodata_to_binary()
"\e[?1004h"
@spec enable_mouse_tracking(:x10 | :normal | :button | :all) :: iodata()
Generates enable mouse tracking sequence for the specified mode.
Modes:
:x10- X10 mouse reporting (press only):normal- Normal tracking (press and release):button- Button-event tracking (press, release, motion with button):all- All motion tracking (all motion events)
Examples
iex> TermUI.ANSI.enable_mouse_tracking(:x10) |> IO.iodata_to_binary()
"\e[?9h"
iex> TermUI.ANSI.enable_mouse_tracking(:all) |> IO.iodata_to_binary()
"\e[?1003h"
@spec enable_sgr_mouse() :: iodata()
Generates enable SGR mouse mode sequence for extended coordinate encoding.
Examples
iex> TermUI.ANSI.enable_sgr_mouse() |> IO.iodata_to_binary()
"\e[?1006h"
@spec enter_alternate_screen() :: iodata()
Generates enter alternate screen buffer sequence.
Examples
iex> TermUI.ANSI.enter_alternate_screen() |> IO.iodata_to_binary()
"\e[?1049h"
Generates foreground color sequence for basic 16-color mode.
Examples
iex> TermUI.ANSI.foreground(:red) |> IO.iodata_to_binary()
"\e[31m"
iex> TermUI.ANSI.foreground(:bright_blue) |> IO.iodata_to_binary()
"\e[94m"
@spec foreground_256(0..255) :: iodata()
Generates foreground color sequence for 256-color palette.
Examples
iex> TermUI.ANSI.foreground_256(196) |> IO.iodata_to_binary()
"\e[38;5;196m"
@spec foreground_rgb(0..255, 0..255, 0..255) :: iodata()
Generates foreground color sequence for true-color RGB.
Examples
iex> TermUI.ANSI.foreground_rgb(255, 128, 0) |> IO.iodata_to_binary()
"\e[38;2;255;128;0m"
Generates combined style sequence from a list of attributes.
Merges multiple attributes into a single SGR sequence for efficiency.
Examples
iex> TermUI.ANSI.format([:bold, :red]) |> IO.iodata_to_binary()
"\e[1;31m"
iex> TermUI.ANSI.format([:underline, :bright_blue, :bg_yellow]) |> IO.iodata_to_binary()
"\e[4;94;43m"
@spec italic() :: iodata()
Generates italic text attribute sequence.
@spec leave_alternate_screen() :: iodata()
Generates leave alternate screen buffer sequence.
Examples
iex> TermUI.ANSI.leave_alternate_screen() |> IO.iodata_to_binary()
"\e[?1049l"
@spec reset() :: iodata()
Generates reset all styles sequence.
Examples
iex> TermUI.ANSI.reset() |> IO.iodata_to_binary()
"\e[0m"
@spec reset_style() :: iodata()
Alias for reset/0.
@spec restore_cursor() :: iodata()
Generates restore cursor position sequence.
Examples
iex> TermUI.ANSI.restore_cursor() |> IO.iodata_to_binary()
"\e[u"
@spec reverse() :: iodata()
Generates reverse video text attribute sequence.
@spec save_cursor() :: iodata()
Generates save cursor position sequence.
Examples
iex> TermUI.ANSI.save_cursor() |> IO.iodata_to_binary()
"\e[s"
@spec scroll_down(pos_integer()) :: iodata()
Generates scroll down sequence.
Examples
iex> TermUI.ANSI.scroll_down(3) |> IO.iodata_to_binary()
"\e[3T"
iex> TermUI.ANSI.scroll_down(1) |> IO.iodata_to_binary()
"\e[T"
@spec scroll_up(pos_integer()) :: iodata()
Generates scroll up sequence.
Examples
iex> TermUI.ANSI.scroll_up(3) |> IO.iodata_to_binary()
"\e[3S"
iex> TermUI.ANSI.scroll_up(1) |> IO.iodata_to_binary()
"\e[S"
@spec set_scroll_region(pos_integer(), pos_integer()) :: iodata()
Generates set scroll region sequence.
Examples
iex> TermUI.ANSI.set_scroll_region(5, 20) |> IO.iodata_to_binary()
"\e[5;20r"
@spec strikethrough() :: iodata()
Generates strikethrough text attribute sequence.
@spec underline() :: iodata()
Generates underline text attribute sequence.