Current section
Files
Jump to
Current section
Files
src/internal@metric.erl
-module(internal@metric).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new_name/2, name_to_string/1]).
-export_type([metric_error/0, metric_name/0, metric/2]).
-type metric_error() :: invalid_metric_name | {invalid_word_in_name, binary()}.
-opaque metric_name() :: {metric_name, binary()}.
-type metric(GLE, GLF) :: {metric,
binary(),
gleam@dict:dict(internal@label:label_set(), GLF)} |
{gleam_phantom, GLE}.
-file("/git/Themis/src/internal/metric.gleam", 29).
-spec new_name(binary(), list(binary())) -> {ok, metric_name()} |
{error, metric_error()}.
new_name(From, Blacklist) ->
R = (gleam@list:try_each(
Blacklist,
fun(Word) -> case gleam_stdlib:contains_string(From, Word) of
false ->
{ok, nil};
true ->
{error, {invalid_word_in_name, Word}}
end end
)),
gleam@result:'try'(
R,
fun(_) -> case internal@prometheus:is_valid_name(From) of
false ->
{error, invalid_metric_name};
true ->
{ok, {metric_name, From}}
end end
).
-file("/git/Themis/src/internal/metric.gleam", 47).
-spec name_to_string(metric_name()) -> binary().
name_to_string(From) ->
erlang:element(2, From).