defmodule TableRex do
@moduledoc """
TableRex generates configurable, text-based tables for display
"""
alias TableRex.Renderer
alias TableRex.Table
@doc """
A shortcut function to render with a one-liner.
Sacrifices all customisation for those that just want sane defaults.
Returns `{:ok, rendered_string}` on success and `{:error, reason}` on failure.
"""
@spec quick_render(list, list, String.t() | nil) :: Renderer.render_return()
def quick_render(rows, header \\ [], title \\ nil) when is_list(rows) and is_list(header) do
Table.new(rows, header, title)
|> Table.render()
end
@doc """
A shortcut function to render with a one-liner.
Sacrifices all customisation for those that just want sane defaults.
Returns the `rendered_string` on success and raises `RuntimeError` on failure.
"""
@spec quick_render!(list, list, String.t() | nil) :: String.t() | no_return
def quick_render!(rows, header \\ [], title \\ nil) when is_list(rows) and is_list(header) do
case quick_render(rows, header, title) do
{:ok, rendered} -> rendered
end
end
end
defmodule TableRex.Error do
defexception [:message]
end