IO ANSI Table v0.1.19 IO.ANSI.Table.Style

Defines functions to retrieve properties of predefined table styles.

Summary

Functions

Retrieves the border attribute of a given table style and line/row type

Retrieves the 3 multipart border widths (left, inner and right) of a given table style and line/row type. The widths are multipart to account for the “fillers” preceding/following the borders

Retrieves the borders of a given table style and line/row type

Retrieves the dash of a given table style and line/row type

Retrieves the filler attribute of a given table style and line/row type

Retrieves the key attribute of a given table style and line/row type

Retrieves the line types of a given table style

Retrieves the non key attribute of a given table style and line/row type

Retrieves the table style for a given table style tag

Retrieves the table style tag for a given table style

Retrieves a list of interpolated texts (one per table style) and optionally passes each interpolated text to a function

Types

attr()
attr() :: [atom] | atom
line_type()
line_type() :: :top | :header | :separator | :bottom
row_type()
row_type() :: :row | :even_row | :odd_row | :row_1 | :row_2 | :row_3
t()
t() :: atom

Functions

border_attr(style, type)
border_attr(t, line_type | row_type) :: attr | nil

Retrieves the border attribute of a given table style and line/row type.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.border_attr(:green, :top)
[:light_yellow, :light_green_background]
border_widths(style, type)
border_widths(t, line_type | row_type) ::
  {[...], [...], [...]} |
  nil

Retrieves the 3 multipart border widths (left, inner and right) of a given table style and line/row type. The widths are multipart to account for the “fillers” preceding/following the borders.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.border_widths(:plain, :bottom) # borders: "└─", "─┴─", "─┘"
{[2, 0], [0, 3, 0], [0, 2]}

iex> alias IO.ANSI.Table.Style
iex> Style.border_widths(:plain, :header) # borders: "│" ,  "│" ,  "│"
{[1, 1], [1, 1, 1], [1, 1]}
borders(style, type)
borders(t, line_type | row_type) ::
  {String.t, String.t, String.t} |
  nil

Retrieves the borders of a given table style and line/row type.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.borders(:cyan, :bottom)
{"╚═", "═╩═", "═╝"}

iex> alias IO.ANSI.Table.Style
iex> Style.borders(:cyan, :row)
{"║", "║", "║"}
dash(style, type)
dash(t, line_type | row_type) :: String.t | nil

Retrieves the dash of a given table style and line/row type.

Examples

iex> IO.ANSI.Table.Style
iex> Style.dash(:dark, :top)
"═"

iex> IO.ANSI.Table.Style
iex> Style.dash(:dark, :row)
nil
filler_attr(style, type)
filler_attr(t, line_type | row_type) :: attr | nil

Retrieves the filler attribute of a given table style and line/row type.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.filler_attr(:mixed, :row)
:light_green_background
key_attr(style, type)
key_attr(t, line_type | row_type) :: attr | nil

Retrieves the key attribute of a given table style and line/row type.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.key_attr(:light, :row)
:light_cyan

iex> alias IO.ANSI.Table.Style
iex> Style.key_attr(:light, :header)
[:light_yellow, :underline]
line_types(style)
line_types(t) :: [line_type | [row_type]] | nil

Retrieves the line types of a given table style.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.line_types(:light)
[:top, :header, :separator, [:row], :bottom]

iex> alias IO.ANSI.Table.Style
iex> Style.line_types(:green_alt)
[:top, :header, :separator, [:even_row, :odd_row]]
non_key_attr(style, type)
non_key_attr(t, line_type | row_type) :: attr | nil

Retrieves the non key attribute of a given table style and line/row type.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.non_key_attr(:cyan, :row)
[:black, :light_cyan_background]
style_for(tag)
style_for(String.t) :: {:ok, atom} | :error

Retrieves the table style for a given table style tag.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.style_for("light")
{:ok, :light}

iex> alias IO.ANSI.Table.Style
iex> Style.style_for("green-alt")
{:ok, :green_alt}
tag_for(style)
tag_for(t) :: String.t | nil

Retrieves the table style tag for a given table style.

Examples

iex> alias IO.ANSI.Table.Style
iex> Style.tag_for(:light)
"light"

iex> alias IO.ANSI.Table.Style
iex> Style.tag_for(:green_alt)
"green-alt"
texts(template, fun \\ &(&1))
texts(String.t, (String.t -> any)) :: [any]

Retrieves a list of interpolated texts (one per table style) and optionally passes each interpolated text to a function.

Examples

alias IO.ANSI.Table.Style
Style.texts "  - `&style`&filler - &note\n"

alias IO.ANSI.Table.Style
Style.texts "  - `&style`&filler - &note", &IO.puts/1

Interpolation placeholders

  • &style - table style (e.g. “:light”)
  • &tag - table style tag (e.g. “light”)
  • &filler - padding after &style or &tag
  • &note - table style note
  • &rank - table style rank (3 digits)