Current section

Files

Jump to
caffeine_lang src caffeine_lang@analysis@vendor.erl
Raw

src/caffeine_lang@analysis@vendor.erl

-module(caffeine_lang@analysis@vendor).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/analysis/vendor.gleam").
-export([resolve_vendor/1, vendor_to_string/1, resolve_vendor_from_path/1]).
-export_type([vendor/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type vendor() :: datadog | honeycomb | dynatrace | new_relic.
-file("src/caffeine_lang/analysis/vendor.gleam", 16).
?DOC(false).
-spec resolve_vendor(binary()) -> {ok, vendor()} | {error, nil}.
resolve_vendor(Vendor_str) ->
case Vendor_str of
V when V =:= <<"datadog"/utf8>> ->
{ok, datadog};
V@1 when V@1 =:= <<"honeycomb"/utf8>> ->
{ok, honeycomb};
V@2 when V@2 =:= <<"dynatrace"/utf8>> ->
{ok, dynatrace};
V@3 when V@3 =:= <<"newrelic"/utf8>> ->
{ok, new_relic};
_ ->
{error, nil}
end.
-file("src/caffeine_lang/analysis/vendor.gleam", 37).
?DOC(false).
-spec vendor_to_string(vendor()) -> binary().
vendor_to_string(V) ->
case V of
datadog ->
<<"datadog"/utf8>>;
honeycomb ->
<<"honeycomb"/utf8>>;
dynatrace ->
<<"dynatrace"/utf8>>;
new_relic ->
<<"newrelic"/utf8>>
end.
-file("src/caffeine_lang/analysis/vendor.gleam", 47).
?DOC(" Extracts the filename stem from a path (basename without extension).\n").
-spec extract_stem(binary()) -> binary().
extract_stem(Path) ->
Base = case gleam@string:split(Path, <<"/"/utf8>>) of
[] ->
Path;
Parts ->
Last@1 = case gleam@list:last(Parts) of
{ok, Last} -> Last;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"caffeine_lang/analysis/vendor"/utf8>>,
function => <<"extract_stem"/utf8>>,
line => 51,
value => _assert_fail,
start => 1437,
'end' => 1475,
pattern_start => 1448,
pattern_end => 1456})
end,
Last@1
end,
case gleam@string:split(Base, <<"."/utf8>>) of
[Stem | _] ->
Stem;
[] ->
Base
end.
-file("src/caffeine_lang/analysis/vendor.gleam", 29).
?DOC(false).
-spec resolve_vendor_from_path(binary()) -> {ok, vendor()} | {error, nil}.
resolve_vendor_from_path(Path) ->
_pipe = Path,
_pipe@1 = extract_stem(_pipe),
resolve_vendor(_pipe@1).