Packages
io_ansi_table
0.4.21
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/ie.ex
defmodule IO.ANSI.Table.IE do
@moduledoc false
# Functions for iex session...
#
# Examples:
# use IO.ANSI.Table.IE
# people()
# people_sorted() # to test sorting on structs, see below..
# people_as_keywords()
# people_sorted_as_keywords()
# print_people(:dotted_mult)
# put_env(:pretty_alt)
# people() |> Table.format()
# GenServer.stop(Server, :shutdown)
# people() |> Table.format()
# print_people(:dotted_mult)
# print_people(:dotted_mult, 9)
# print_people_as_keywords(:green_mult)
# print_people_as_keywords(:green_mult, 9)
# styles()
# styles(:light_green)
# Style.styles()
# print_islands([:medium, :medium_alt, :medium_mult])
# print_islands()
# print_islands(:game)
# print_people([:pretty_alt, :dotted_alt, :medium_alt])
# print_people()
# Application.put_env(:io_ansi_table, :async, true)
# r(Table)
# print_people([:pretty_alt, :dotted_alt, :medium_alt])
# print_people()
alias IO.ANSI.Plus, as: ANSI
alias IO.ANSI.Table
alias IO.ANSI.Table.Style
require MapSorter
@align_specs [center: :dob, right: :weight]
@headers [:name, :dob, :likes, :bmi]
@header_fixes %{"Dob" => "DOB", "Bmi" => "BMI"}
@i "#{ANSI.format([:sandy_brown, :sandy_brown_background, "isl"], true)}"
@f "#{ANSI.format([:islamic_green, :islamic_green_background, "for"], true)}"
@w "#{ANSI.format([:dodger_blue, :dodger_blue_background, "wat"], true)}"
@h "#{ANSI.format([:islamic_green, :islamic_green_background, "hit"], true)}"
@m "#{ANSI.format([:mortar, :mortar_background, "mis"], true)}"
@islands [
%{:row => 1, 1 => @i, 2 => @f, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 2, 1 => @w, 2 => @f, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 3, 1 => @i, 2 => @f, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @i, 8 => @w, 9 => @w, :A => @w},
%{:row => 4, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @i, 8 => @w, 9 => @w, :A => @w},
%{:row => 5, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @f, 8 => @i, 9 => @w, :A => @w},
%{:row => 6, 1 => @w, 2 => @w, 3 => @i, 4 => @i, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 7, 1 => @w, 2 => @i, 3 => @i, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 8, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 9, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @i,
6 => @i, 7 => @w, 8 => @w, 9 => @f, :A => @w},
%{:row => 10, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @i,
6 => @i, 7 => @w, 8 => @w, 9 => @w, :A => @w}
]
@attacks [
%{:row => 1, 1 => @w, 2 => @m, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 2, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 3, 1 => @w, 2 => @w, 3 => @w, 4 => @h, 5 => @h,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 4, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @h, 8 => @w, 9 => @w, :A => @w},
%{:row => 5, 1 => @w, 2 => @w, 3 => @m, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @h, 9 => @w, :A => @w},
%{:row => 6, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 7, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @m},
%{:row => 8, 1 => @w, 2 => @w, 3 => @w, 4 => @m, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 9, 1 => @w, 2 => @w, 3 => @h, 4 => @m, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w},
%{:row => 10, 1 => @w, 2 => @w, 3 => @w, 4 => @w, 5 => @w,
6 => @w, 7 => @w, 8 => @w, 9 => @w, :A => @w}
]
@margins [top: 1, bottom: 0]
# Using @people with struct dob's requires to...
# - config :map_sorter, sorting_on_structs?: true
# - mix deps.compile map_sorter
# struct dob's...
@people [
%{name: "Mike", likes: "ski, arts", dob: ~D[1992-04-15], bmi: 23.9},
%{name: "Mary", likes: "travels" , dob: ~D[1992-04-15], bmi: 26.8},
%{name: "Ann" , likes: "reading" , dob: ~D[1992-04-15], bmi: 24.7},
%{name: "Ray" , likes: "cycling" , dob: ~D[1977-08-28], bmi: 19.1},
%{name: "Bill", likes: "karate" , dob: ~D[1977-08-28], bmi: 18.1},
%{name: "Joe" , likes: "boxing" , dob: ~D[1977-08-28], bmi: 20.8},
%{name: "Jill", likes: "cooking" , dob: ~D[1976-09-28], bmi: 25.8}
]
# string dob's...
@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}
]
@sort_specs [:dob, desc: :likes]
@sort_symbols [asc: "▲", desc: "▼", pos: :trailing]
defmacro __using__(_options) do
quote do
import unquote(__MODULE__)
alias unquote(__MODULE__)
alias IO.ANSI.Plus, as: ANSI
alias IO.ANSI.Table.{App, Column, Config, Formatter, Heading}
alias IO.ANSI.Table.{Line_Type, Line, Options, Row, Server, Spec, Style}
alias IO.ANSI.Table
require MapSorter
:ok
end
end
def people(), do: @people()
def people_as_keywords(), do: Enum.map(@people, &Keyword.new/1)
def print_people(styles \\ Style.styles())
def print_people(styles) when is_list(styles) do
Enum.each(styles, &print_people/1)
end
def print_people(style) do
Table.format(
@people,
bell: true,
count: length(@people),
style: style,
headers: @headers,
header_fixes: @header_fixes,
sort_specs: @sort_specs,
align_specs: @align_specs,
margins: @margins
)
end
def put_env(style) do
Application.put_env(:io_ansi_table, :bell, true)
Application.put_env(:io_ansi_table, :count, length(@people))
Application.put_env(:io_ansi_table, :style, style)
Application.put_env(:io_ansi_table, :headers, @headers)
Application.put_env(:io_ansi_table, :header_fixes, @header_fixes)
Application.put_env(:io_ansi_table, :sort_specs, @sort_specs)
Application.put_env(:io_ansi_table, :align_specs, @align_specs)
Application.put_env(:io_ansi_table, :margins, @margins)
Application.put_env(:io_ansi_table, :sort_symbols, @sort_symbols)
end
def print_islands(styles \\ Style.styles())
def print_islands(styles) when is_list(styles) do
Enum.each(styles, &print_islands/1)
end
def print_islands(style) do
Table.format(
@islands,
bell: false,
count: 10,
style: style,
headers: [:row, 1, 2, 3, 4, 5, 6, 7, 8, 9, :A],
header_fixes: %{"Row" => "", "A" => "10"},
align_specs: [
right: :row,
center: 1,
center: 2,
center: 3,
center: 4,
center: 5,
center: 6,
center: 7,
center: 8,
center: 9,
center: :A
],
sort_specs: [:row],
sort_symbols: [asc: ""],
margins: @margins
)
Table.format(
@attacks,
bell: false,
count: 10,
style: style,
headers: [:row, 1, 2, 3, 4, 5, 6, 7, 8, 9, :A],
header_fixes: %{"Row" => "", "A" => "10"},
align_specs: [
right: :row,
center: 1,
center: 2,
center: 3,
center: 4,
center: 5,
center: 6,
center: 7,
center: 8,
center: 9,
center: :A
],
sort_specs: [:row],
sort_symbols: [asc: ""],
margins: [left: 35, top: -11]
)
end
def print_people_as_keywords(style) do
Table.format(
people_as_keywords(),
bell: true,
count: length(@people),
style: style,
headers: @headers,
header_fixes: @header_fixes,
sort_specs: @sort_specs,
align_specs: @align_specs,
margins: @margins
)
end
def print_people(style, max_width) do
Table.format(
@people,
bell: true,
count: length(@people),
style: style,
headers: @headers,
header_fixes: @header_fixes,
sort_specs: @sort_specs,
align_specs: @align_specs,
margins: @margins,
max_width: max_width
)
end
def print_people_as_keywords(style, max_width) do
Table.format(
people_as_keywords(),
bell: true,
count: length(@people),
style: style,
headers: @headers,
header_fixes: @header_fixes,
sort_specs: @sort_specs,
align_specs: @align_specs,
margins: @margins,
max_width: max_width
)
end
def styles(color \\ :light_magenta) do
chardata = [color, " &style&filler", :reset, " - &rank - ¬e"]
ansidata = ANSI.format(chardata)
"#{ansidata}"
|> Style.texts(&IO.puts/1)
|> length()
end
@dialyzer {:nowarn_function, people_sorted: 0}
def people_sorted() do
MapSorter.sort(@people, @sort_specs)
end
@dialyzer {:nowarn_function, people_sorted_as_keywords: 0}
def people_sorted_as_keywords() do
MapSorter.sort(people_as_keywords(), @sort_specs)
end
end