Current section
Files
Jump to
Current section
Files
src/testcontainer@internal@image_ref.erl
-module(testcontainer@internal@image_ref).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/testcontainer/internal/image_ref.gleam").
-export([parse/1]).
-export_type([image_ref/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.
?MODULEDOC(false).
-type image_ref() :: {image_ref, binary(), binary()}.
-file("src/testcontainer/internal/image_ref.gleam", 18).
?DOC(false).
-spec parse(binary()) -> image_ref().
parse(Raw) ->
Parts = gleam@string:split(Raw, <<":"/utf8>>),
case lists:reverse(Parts) of
[Potential_tag, Name_part | Rest_reversed] ->
case gleam_stdlib:contains_string(Potential_tag, <<"/"/utf8>>) of
true ->
{image_ref, Raw, <<"latest"/utf8>>};
false ->
case gleam_stdlib:contains_string(Name_part, <<"/"/utf8>>) of
true ->
Name = gleam@string:join(
lists:reverse([Name_part | Rest_reversed]),
<<":"/utf8>>
),
{image_ref, Name, Potential_tag};
false ->
Name@1 = gleam@string:join(
lists:append(
lists:reverse(Rest_reversed),
[Name_part]
),
<<":"/utf8>>
),
{image_ref, Name@1, Potential_tag}
end
end;
_ ->
{image_ref, Raw, <<"latest"/utf8>>}
end.