IO.ANSI.Table.Header (IO ANSI Table v1.0.40)
View SourceFinds the align or sort attribute of a header. Also converts a header into a "heading".
Summary
Types
@type align_attr() :: :left | :center | :right
Align atribute
@type align_spec() :: t() | {align_attr(), t()}
Align spec
@type sort_attr() :: MapSorter.SortSpec.sort_dir()
Sort atribute
@type sort_spec() :: MapSorter.SortSpec.t()
Sort spec
Sort symbol
@type sym_pos() :: :leading | :trailing
Symbol position
@type t() :: Map.key()
Header
Functions
@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}
@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↑"