IO.ANSI.Table.Header (IO ANSI Table v1.0.40)

View Source

Finds the align or sort attribute of a header. Also converts a header into a "heading".

Summary

Types

Align atribute

Align spec

Sort atribute

Sort spec

Sort symbol

Symbol position

t()

Header

Functions

Finds the align or sort attribute of a header.

Converts a header into a "heading".

Types

align_attr()

@type align_attr() :: :left | :center | :right

Align atribute

align_spec()

@type align_spec() :: t() | {align_attr(), t()}

Align spec

sort_attr()

@type sort_attr() :: MapSorter.SortSpec.sort_dir()

Sort atribute

sort_spec()

@type sort_spec() :: MapSorter.SortSpec.t()

Sort spec

sort_symbol()

@type sort_symbol() :: {sort_attr(), String.t()} | {:pos, sym_pos() | [sym_pos()]}

Sort symbol

sym_pos()

@type sym_pos() :: :leading | :trailing

Symbol position

t()

@type t() :: Map.key()

Header

Functions

find_attr(header, specs, default_attr)

@spec find_attr(t(), [align_spec() | sort_spec()], :left | :asc) ::
  align_attr() | sort_attr() | nil

Finds the align or sort attribute of a header.

Examples

iex> alias IO.ANSI.Table.Header
iex> sort_specs = ["dept", desc: "hired"]
iex> {
...>   Header.find_attr("dept" , sort_specs, :asc),
...>   Header.find_attr("hired", sort_specs, :asc),
...>   Header.find_attr("job"  , sort_specs, :asc)
...> }
{:asc, :desc, nil}

iex> alias IO.ANSI.Table.Header
iex> sort_specs = ["dept", desc: {"hired", Date}]
iex> {
...>   Header.find_attr("dept" , sort_specs, :asc),
...>   Header.find_attr("hired", sort_specs, :asc),
...>   Header.find_attr("job"  , sort_specs, :asc)
...> }
{:asc, :desc, nil}

iex> alias IO.ANSI.Table.Header
iex> sort_specs = [{"hired", Date}, "job", {:desc, "dept"}]
iex> {
...>   Header.find_attr("dept" , sort_specs, :asc),
...>   Header.find_attr("hired", sort_specs, :asc),
...>   Header.find_attr("job"  , sort_specs, :asc)
...> }
{:desc, :asc, :asc}

iex> alias IO.ANSI.Table.Header
iex> sort_specs = [{"hired", Date}, desc: "dept"]
iex> {
...>   Header.find_attr("dept" , sort_specs, :asc),
...>   Header.find_attr("hired", sort_specs, :asc),
...>   Header.find_attr("job"  , sort_specs, :asc)
...> }
{:desc, :asc, nil}

iex> alias IO.ANSI.Table.Header
iex> align_specs = ["dept", right: "hired"]
iex> {
...>   Header.find_attr("dept" , align_specs, :left),
...>   Header.find_attr("hired", align_specs, :left),
...>   Header.find_attr("job"  , align_specs, :left)
...> }
{:left, :right, nil}

to_heading(header, spec)

@spec to_heading(t(), IO.ANSI.Table.Spec.t()) :: String.t()

Converts a header into a "heading".

Examples

iex> alias IO.ANSI.Table.{Header, Spec}
iex> spec = Spec.new([:col_4, :col_1, :col_2], sort_specs: [asc: :col_2])
iex> Header.to_heading(:col_2, spec)
"Col 2↑"