Packages

A terminal styling and logging framework based off the Golang Charm Lipgloss framework.

Current section

Files

Jump to
the_stars src the_stars@styles.erl
Raw

src/the_stars@styles.erl

-module(the_stars@styles).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/the_stars/styles.gleam").
-export([new/0, set_foreground/2, get_foreground/1, set_background/2, get_background/1, set_bold/2, get_bold/1, set_dim/2, get_dim/1, set_italic/2, get_italic/1, set_underline/2, get_underline/1, set_blink/2, get_blink/1, set_invert/2, get_invert/1, set_strikethrough/2, get_strikethrough/1, render/2]).
-export_type([style/0]).
-opaque style() :: {style,
the_stars@color:color(),
the_stars@color:color(),
boolean(),
boolean(),
boolean(),
boolean(),
boolean(),
boolean(),
boolean()}.
-file("src/the_stars/styles.gleam", 29).
-spec new() -> style().
new() ->
{style,
the_stars@color:new(0, 0, 0),
no_color,
false,
false,
false,
false,
false,
false,
false}.
-file("src/the_stars/styles.gleam", 43).
-spec render_clear() -> binary().
render_clear() ->
<<"\x{001b}[0m"/utf8>>.
-file("src/the_stars/styles.gleam", 93).
-spec render_boolean(boolean(), binary()) -> binary().
render_boolean(Flag, Value) ->
case Flag of
true ->
Value;
false ->
<<""/utf8>>
end.
-file("src/the_stars/styles.gleam", 100).
-spec set_foreground(style(), the_stars@color:color()) -> style().
set_foreground(Style, Color) ->
{style,
Color,
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 104).
-spec get_foreground(style()) -> the_stars@color:color().
get_foreground(Style) ->
erlang:element(2, Style).
-file("src/the_stars/styles.gleam", 108).
-spec set_background(style(), the_stars@color:color()) -> style().
set_background(Style, Color) ->
{style,
erlang:element(2, Style),
Color,
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 112).
-spec get_background(style()) -> the_stars@color:color().
get_background(Style) ->
erlang:element(3, Style).
-file("src/the_stars/styles.gleam", 116).
-spec set_bold(style(), boolean()) -> style().
set_bold(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
Value,
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 120).
-spec get_bold(style()) -> boolean().
get_bold(Style) ->
erlang:element(4, Style).
-file("src/the_stars/styles.gleam", 124).
-spec set_dim(style(), boolean()) -> style().
set_dim(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
Value,
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 128).
-spec get_dim(style()) -> boolean().
get_dim(Style) ->
erlang:element(5, Style).
-file("src/the_stars/styles.gleam", 132).
-spec set_italic(style(), boolean()) -> style().
set_italic(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
Value,
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 136).
-spec get_italic(style()) -> boolean().
get_italic(Style) ->
erlang:element(6, Style).
-file("src/the_stars/styles.gleam", 140).
-spec set_underline(style(), boolean()) -> style().
set_underline(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
Value,
erlang:element(8, Style),
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 144).
-spec get_underline(style()) -> boolean().
get_underline(Style) ->
erlang:element(7, Style).
-file("src/the_stars/styles.gleam", 148).
-spec set_blink(style(), boolean()) -> style().
set_blink(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
Value,
erlang:element(9, Style),
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 152).
-spec get_blink(style()) -> boolean().
get_blink(Style) ->
erlang:element(8, Style).
-file("src/the_stars/styles.gleam", 156).
-spec set_invert(style(), boolean()) -> style().
set_invert(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
Value,
erlang:element(10, Style)}.
-file("src/the_stars/styles.gleam", 160).
-spec get_invert(style()) -> boolean().
get_invert(Style) ->
erlang:element(9, Style).
-file("src/the_stars/styles.gleam", 164).
-spec set_strikethrough(style(), boolean()) -> style().
set_strikethrough(Style, Value) ->
{style,
erlang:element(2, Style),
erlang:element(3, Style),
erlang:element(4, Style),
erlang:element(5, Style),
erlang:element(6, Style),
erlang:element(7, Style),
erlang:element(8, Style),
erlang:element(9, Style),
Value}.
-file("src/the_stars/styles.gleam", 168).
-spec get_strikethrough(style()) -> boolean().
get_strikethrough(Style) ->
erlang:element(10, Style).
-file("src/the_stars/styles.gleam", 67).
-spec render_fg_color(style()) -> binary().
render_fg_color(Style) ->
case erlang:element(2, Style) of
{color, R, G, B} ->
_pipe = [38, 2, R, G, B],
_pipe@1 = gleam@list:map(
_pipe,
fun(V) -> erlang:integer_to_binary(V) end
),
gleam@string:join(_pipe@1, <<";"/utf8>>);
no_color ->
<<"39"/utf8>>
end.
-file("src/the_stars/styles.gleam", 80).
-spec render_bg_color(style()) -> binary().
render_bg_color(Style) ->
case erlang:element(3, Style) of
{color, R, G, B} ->
_pipe = [48, 2, R, G, B],
_pipe@1 = gleam@list:map(
_pipe,
fun(V) -> erlang:integer_to_binary(V) end
),
gleam@string:join(_pipe@1, <<";"/utf8>>);
no_color ->
<<"49"/utf8>>
end.
-file("src/the_stars/styles.gleam", 48).
-spec render(style(), binary()) -> binary().
render(Style, S) ->
Codes = begin
_pipe = [render_fg_color(Style),
render_bg_color(Style),
render_boolean(erlang:element(4, Style), <<"1"/utf8>>),
render_boolean(erlang:element(5, Style), <<"2"/utf8>>),
render_boolean(erlang:element(6, Style), <<"3"/utf8>>),
render_boolean(erlang:element(7, Style), <<"4"/utf8>>),
render_boolean(erlang:element(8, Style), <<"5"/utf8>>),
render_boolean(erlang:element(9, Style), <<"7"/utf8>>),
render_boolean(erlang:element(10, Style), <<"9"/utf8>>)],
_pipe@1 = gleam@list:filter(_pipe, fun(V) -> string:length(V) > 0 end),
gleam@string:join(_pipe@1, <<";"/utf8>>)
end,
<<<<<<<<"\x{001b}["/utf8, Codes/binary>>/binary, "m"/utf8>>/binary,
S/binary>>/binary,
(render_clear())/binary>>.