Packages
io_ansi_table
1.0.4
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/spec/rows.ex
defmodule IO.ANSI.Table.Spec.Rows do
@moduledoc """
Derives the rows of a table.
Also transposes rows into columns.
"""
alias IO.ANSI.Table.{Column, Header, Row, Spec}
@spec derive(Spec.t(), [Access.container()]) :: Spec.t()
def derive(%Spec{sort_specs: sort_specs, headers: headers} = spec, maps) do
import MapSorter, only: [sort: 2]
rows = maps |> sort(sort_specs) |> Enum.take(spec.count) |> select(headers)
put_in(spec.rows, rows)
end
@doc """
Transposes `rows` into `columns`.
## Examples
iex> alias IO.ANSI.Table.Spec.Rows
iex> rows = [
...> ["1", "2", "3"],
...> ["4", "5", "6"]
...> ]
iex> Rows.transpose(rows)
[["1", "4"], ["2", "5"], ["3", "6"]]
"""
@spec transpose([Row.t()]) :: [Column.t()]
def transpose(rows), do: Enum.zip(rows) |> Enum.map(&Tuple.to_list/1)
## Private functions
# @doc """
# Gets the values for `headers` in `maps` and returns a list of `rows`.
# ## Examples
# iex> alias IO.ANSI.Table.Spec.Rows
# iex> maps = [
# ...> %{a: 1, b: 2, c: 3},
# ...> %{a: 4, b: 5, c: 6}
# ...> ]
# iex> Rows.select(maps, [:c, :a])
# [["3", "1"], ["6", "4"]]
# iex> alias IO.ANSI.Table.Spec.Rows
# iex> maps = [
# ...> %{:one => "1", '2' => 2.0, "3" => :three},
# ...> %{:one => '4', '2' => "5", "3" => 000006}
# ...> ]
# iex> Rows.select(maps, ["3", :one, '2'])
# [["three", "1", "2.0"], ["6", "4", "5"]]
# """
@spec select([Access.container()], [Header.t()]) :: [Row.t()]
defp select(maps, headers) do
for map <- maps do
for header <- headers, do: map[header] |> to_string()
end
end
end