Current section

Files

Jump to
tobble src tobble.erl
Raw

src/tobble.erl

-module(tobble).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([builder/0, add_row/2, set_title/2, to_list/1, title/1, build/1, build_with_internal/1, render_with_options/2, render/1, render_iter/2]).
-export_type([table/0, builder/0, builder_error/0]).
-opaque table() :: {table,
tobble@internal@rows:rows(binary()),
gleam@option:option(binary())}.
-opaque builder() :: {builder, tobble@internal@builder:builder()}.
-type builder_error() :: {inconsistent_column_count_error, integer(), integer()} |
empty_table_error |
empty_title_error.
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 79).
-spec builder() -> builder().
builder() ->
{builder, tobble@internal@builder:new()}.
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 86).
-spec add_row(builder(), list(binary())) -> builder().
add_row(Builder, Columns) ->
_pipe = erlang:element(2, Builder),
_pipe@1 = tobble@internal@builder:add_row(_pipe, Columns),
{builder, _pipe@1}.
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 120).
-spec set_title(builder(), binary()) -> builder().
set_title(Builder, Title) ->
_pipe = erlang:element(2, Builder),
_pipe@1 = tobble@internal@builder:set_title(_pipe, Title),
{builder, _pipe@1}.
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 284).
-spec to_list(table()) -> list(list(binary())).
to_list(Table) ->
tobble@internal@rows:to_lists(erlang:element(2, Table)).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 308).
-spec title(table()) -> gleam@option:option(binary()).
title(Table) ->
erlang:element(3, Table).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 312).
-spec builder_error_from_internal(tobble@internal@builder:builder_error()) -> builder_error().
builder_error_from_internal(Error) ->
case Error of
{inconsistent_column_count_error, Expected, Got} ->
{inconsistent_column_count_error, Expected, Got};
empty_table_error ->
empty_table_error;
empty_title_error ->
empty_title_error
end.
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 128).
-spec build(builder()) -> {ok, table()} | {error, builder_error()}.
build(Builder) ->
_pipe = erlang:element(2, Builder),
_pipe@1 = tobble@internal@builder:to_result(_pipe),
_pipe@2 = gleam@result:map(
_pipe@1,
fun(Built) ->
{table, erlang:element(2, Built), erlang:element(3, Built)}
end
),
gleam@result:map_error(_pipe@2, fun builder_error_from_internal/1).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 136).
-spec build_with_internal(tobble@internal@builder:builder()) -> {ok, table()} |
{error, builder_error()}.
build_with_internal(Builder) ->
build({builder, Builder}).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 247).
-spec render_with_options(table(), list(tobble@table_render_opts:option())) -> binary().
render_with_options(Table, Options) ->
_pipe = tobble@internal@render:default_render_context(
erlang:element(2, Table)
),
_pipe@1 = tobble@table_render_opts:apply_options(_pipe, Options),
_pipe@2 = tobble@internal@render:to_yielder(
_pipe@1,
erlang:element(2, Table),
erlang:element(3, Table)
),
_pipe@3 = gleam@yielder:map(_pipe@2, fun gleam_stdlib:identity/1),
_pipe@4 = gleam@yielder:to_list(_pipe@3),
_pipe@5 = gleam@string_tree:join(_pipe@4, <<"\n"/utf8>>),
unicode:characters_to_binary(_pipe@5).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 168).
-spec render(table()) -> binary().
render(Table) ->
render_with_options(Table, []).
-file("/home/nick/Documents/code/tobble/src/tobble.gleam", 203).
-spec render_iter(table(), list(tobble@table_render_opts:option())) -> gleam@yielder:yielder(binary()).
render_iter(Table, Options) ->
_pipe = tobble@internal@render:default_render_context(
erlang:element(2, Table)
),
_pipe@1 = tobble@table_render_opts:apply_options(_pipe, Options),
tobble@internal@render:to_yielder(
_pipe@1,
erlang:element(2, Table),
erlang:element(3, Table)
).