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