Skip to content

RaymondLoranger/io_ansi_table

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IO ANSI Table

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.

Installation

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

Examples

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)

light

light_alt

light_mult

cyan_alt

cyan_mult

Notes

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:

  • :aqua
  • :chartreuse
  • :psychedelic_purple

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.

Latest version

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

About

Writes data to "stdio" in a table with borders and colors. Can choose a table style to change the look of the table.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages