Packages
io_ansi_table
0.1.17
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
io_ansi_table
README.md
README.md
# IO ANSI Table
Prints data to STDOUT in a table with borders and colors.
Can choose a table style among the 35 already predefined.
## Using
To use `IO ANSI Table` in your Mix project, first add it as a dependency:
```elixir
def deps do
[{:io_ansi_table, "~> 0.1"}]
end
```
Then run `mix deps.get` to install all dependencies or more specifically:
- `mix deps.get io_ansi_table`
- `mix deps.unlock io_ansi_table` (if required)
- `mix deps.update io_ansi_table` (if required)
- `mix deps.compile io_ansi_table`
In your project's `config/config.exs` file, you should then configure:
- headers
- header fixes
- key headers
- margins
Here is an example, if your table relates to NOAA Observations:
```elixir
config :io_ansi_table, headers: [
"station_id", "weather", "temperature_string", "wind_mph",
"location", "observation_time_rfc822"
]
config :io_ansi_table, header_fixes: %{
~r[ id$]i => " ID",
~r[ mph$]i => " MPH",
~r[ rfc(\d+)$]i => " RFC-\\1"
}
config :io_ansi_table, key_headers: ["temperature_string", "wind_mph"]
```
Here is an example to position the table by specifying up to 3 margins:
```elixir
config :io_ansi_table, margins: [
top: 1, # line(s) before table
bottom: 1, # line(s) after table
left: 2 # space(s) left of table
]
```
The above margins represent the default table position.
## Examples
```elixir
config :io_ansi_table, headers: [:name, :date_of_birth, :likes]
config :io_ansi_table, header_fixes: %{~r[ of ]i => " of "}
config :io_ansi_table, key_headers: [:date_of_birth]
config :io_ansi_table, margins: [
top: 2, # line(s) before table
bottom: 2, # line(s) after table
left: 2 # space(s) left of table
]
```
```elixir
alias IO.ANSI.Table.Formatter
people = [
%{name: "Mike", likes: "ski, arts", date_of_birth: "1992-04-15"},
%{name: "Mary", likes: "reading" , date_of_birth: "1985-07-11"},
%{name: "Ray" , likes: "cycling" , date_of_birth: "1977-08-28"}
]
Formatter.print_table(people, 3, true, :dark)
```
## 
N.B. On Windows, run command `chcp 65001` (in **Powershell**) for the UTF-8 code page.
These 2 packages use `io_ansi_table` as a dependency to tabulate data retrieved from the web:
- [github_issues](https://hex.pm/packages/github_issues)
- [noaa_observations](https://hex.pm/packages/noaa_observations)
## Customization
You can create new table styles or modify any of the 35 predefined ones
by changing the dependency's `config/config.exs` file. You would then need to
run `mix deps.compile io_ansi_table [--force]` to make the changes effective.
## Current version
The current version supports:
- multiple key headers
- alternating row attributes