Packages
io_ansi_table
0.3.3
1.0.40
1.0.39
1.0.38
1.0.37
1.0.36
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.4.32
0.4.31
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.29
0.3.28
0.3.27
0.3.26
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Writes data to "stdio" in a table with borders and colors. Can choose a table style to change the look of the table.
Current section
Files
Jump to
Current section
Files
lib/io/ansi/table/heading.ex
defmodule IO.ANSI.Table.Heading do
# @moduledoc """
# Functions related to the column headings of a table.
# """
@moduledoc false
alias IO.ANSI.Table.{Column, Spec}
@type t :: String.t
@spec headings(Spec.t) :: Spec.t
def headings(spec) do
headings = Enum.map(spec.headers, &to_heading(&1, spec))
Map.put(spec, :headings, headings)
end
## Private functions
# @doc """
# Converts a `header` to a "heading".
# """
@spec to_heading(any, Spec.t) :: t
defp to_heading(header, spec) do
sort_symbol(header, spec, :leading) <>
titlecase(header, spec) <>
sort_symbol(header, spec, :trailing)
end
@spec sort_symbol(any, Spec.t, atom) :: String.t
defp sort_symbol(header, spec, loc) do
pos_specs = [spec.sort_symbols[:pos]] |> List.flatten()
dir = Column.find_attr(header, spec.sort_specs, :asc)
loc in pos_specs && spec.sort_symbols[dir] || ""
end
@spec titlecase(any, Spec.t) :: String.t
defp titlecase(header, spec) # string, atom or charlist
when is_binary(header) or is_atom(header) or is_list(header) do
title =
header
|> to_string()
|> String.split(~r/(_| )+/, trim: true)
|> Enum.map_join(" ", &title/1)
Enum.reduce(spec.header_fixes, title, &fix/2)
end
defp titlecase(header, _spec), do: inspect(header)
@spec title(String.t) :: String.t
defp title(word) do
word
|> String.first()
|> String.upcase()
|> Kernel.<>(String.slice(word, 1..-1))
end
@spec fix(tuple, String.t) :: String.t
defp fix({key, value}, title), do: String.replace(title, key, value)
end