Writes data to :stdio
in a table with borders and colors.
Can choose a table style to change the look of the table.
Inspired by the book Programming Elixir by Dave Thomas.
Add io_ansi_table
to your list of dependencies in mix.exs
:
def deps do
[
{:io_ansi_table, "~> 1.0"}
]
end
You may also define io_ansi_table
as an included application, if only using
the IO.ANSI.Table.write/3 function:
def application do
[
included_applications: [:io_ansi_table],
extra_applications: [:logger]
]
end
alias IO.ANSI.Table
people = [
%{name: "Mike", likes: "ski, arts", dob: "1992-04-15", bmi: 23.9},
%{name: "Mary", likes: "travels" , dob: "1992-04-15", bmi: 26.8},
%{name: "Ann" , likes: "reading" , dob: "1992-04-15", bmi: 24.7},
%{name: "Ray" , likes: "cycling" , dob: "1977-08-28", bmi: 19.1},
%{name: "Bill", likes: "karate" , dob: "1977-08-28", bmi: 18.1},
%{name: "Joe" , likes: "boxing" , dob: "1977-08-28", bmi: 20.8},
%{name: "Jill", likes: "cooking" , dob: "1976-09-28", bmi: 25.8}
]
Table.start([:name, :dob, :likes],
header_fixes: %{~r[dob]i => "Date of Birth"},
sort_specs: [asc: :dob],
align_specs: [center: :dob],
margins: [top: 2, bottom: 2, left: 2]
)
Table.format(people, style: :light)
Table.format(people, style: :light_alt)
Table.format(people, style: :light_mult)
Table.format(people, style: :cyan_alt)
Table.format(people, style: :cyan_mult)
For side-by-side tables, you can specify a negative top margin.
In addition to the 16 standard ANSI colors1 and their background counterparts, this package also supports the 256 Xterm colors (foreground and background).
Most of these 256 colors were given names like:
For details, see file config/persist_colors.exs
of dependency
io_ansi_plus.
The following 2 packages use io_ansi_table
as a dependency to tabulate
data fetched from the web:
Invocation from a remote shell is now supported (courtesy of milkwine).
Sorting on Date columns or other struct types like Version is now supported.
1 Actually 8 colors and their "bright" variants.
The latest version supports:
- sorting on multiple columns
- alternating row attributes
- alignment of column elements
- sort direction indicators
- negative top margin
- ANSI and Xterm colors
- invocation from remote shell
- sorting on Date columns