Current section
Files
Jump to
Current section
Files
src/internal@label.erl
-module(internal@label).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, print/1, from_dict/1, add_label/3, delete_label/2]).
-export_type([label_name/0, label_set/0, label_error/0]).
-opaque label_name() :: {label_name, binary()}.
-opaque label_set() :: {label_set, gleam@dict:dict(label_name(), binary())}.
-type label_error() :: invalid_label_name.
-file("/git/Themis/src/internal/label.gleam", 32).
-spec new() -> label_set().
new() ->
{label_set, maps:new()}.
-file("/git/Themis/src/internal/label.gleam", 53).
-spec print(label_set()) -> binary().
print(Labels) ->
_pipe = (gleam@dict:fold(
erlang:element(2, Labels),
[<<"{"/utf8>>],
fun(Current, Name, Value) ->
[<<<<<<(erlang:element(2, Name))/binary, "=\""/utf8>>/binary,
Value/binary>>/binary,
"\","/utf8>> |
Current]
end
)),
_pipe@1 = lists:reverse(_pipe),
_pipe@2 = gleam_stdlib:identity(_pipe@1),
_pipe@3 = unicode:characters_to_binary(_pipe@2),
_pipe@4 = gleam@string:drop_end(_pipe@3, 1),
gleam@string:append(_pipe@4, <<"}"/utf8>>).
-file("/git/Themis/src/internal/label.gleam", 65).
-spec new_label_name(binary()) -> {ok, label_name()} | {error, label_error()}.
new_label_name(From) ->
case internal@prometheus:is_valid_label(From) of
false ->
{error, invalid_label_name};
true ->
{ok, {label_name, From}}
end.
-file("/git/Themis/src/internal/label.gleam", 20).
-spec from_dict(gleam@dict:dict(binary(), binary())) -> {ok, label_set()} |
{error, label_error()}.
from_dict(Labels) ->
R = (gleam@list:try_map(
maps:to_list(Labels),
fun(_use0) ->
{Name_string, Value} = _use0,
gleam@result:'try'(
new_label_name(Name_string),
fun(Name) -> {ok, {Name, Value}} end
)
end
)),
gleam@result:map(
R,
fun(Checked_dict) -> {label_set, maps:from_list(Checked_dict)} end
).
-file("/git/Themis/src/internal/label.gleam", 36).
-spec add_label(label_set(), binary(), binary()) -> {ok, label_set()} |
{error, label_error()}.
add_label(Labels, Key, Value) ->
gleam@result:map(
new_label_name(Key),
fun(Label_name) ->
{label_set,
gleam@dict:insert(erlang:element(2, Labels), Label_name, Value)}
end
).
-file("/git/Themis/src/internal/label.gleam", 45).
-spec delete_label(label_set(), binary()) -> {ok, label_set()} |
{error, label_error()}.
delete_label(Labels, Key) ->
gleam@result:map(
new_label_name(Key),
fun(Label_name) ->
{label_set,
gleam@dict:delete(erlang:element(2, Labels), Label_name)}
end
).