-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).