-module(roundabout@internal@parameter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/roundabout/internal/parameter.gleam"). -export([new/2, unsafe/2, unsafe_int/1, unsafe_str/1, qualify_name/3, kind/1, print_type_name/1, print_name_qualified/1, print_name/1, print_name_and_type/1]). -export_type([kind/0, parameter/1]). -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 kind() :: int | str. -opaque parameter(EHC) :: {parameter, binary(), kind()} | {gleam_phantom, EHC}. -file("src/roundabout/internal/parameter.gleam", 17). ?DOC(false). -spec new(binary(), kind()) -> {ok, parameter(roundabout@internal@qualified:unqualified())} | {error, binary()}. new(Name, Kind) -> Re@1 = case gleam@regexp:from_string(<<"^[a-z][a-z0-9 _-]*$"/utf8>>) of {ok, Re} -> Re; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"roundabout/internal/parameter"/utf8>>, function => <<"new"/utf8>>, line => 18, value => _assert_fail, start => 406, 'end' => 467, pattern_start => 417, pattern_end => 423}) end, Candidate = justin:snake_case(Name), case gleam@regexp:check(Re@1, Candidate) of true -> {ok, {parameter, justin:snake_case(Name), Kind}}; false -> {error, <<"Invalid parameter name "/utf8, Name/binary>>} end. -file("src/roundabout/internal/parameter.gleam", 28). ?DOC(false). -spec unsafe(binary(), kind()) -> parameter(any()). unsafe(Name, Kind) -> {parameter, Name, Kind}. -file("src/roundabout/internal/parameter.gleam", 32). ?DOC(false). -spec unsafe_int(binary()) -> parameter(any()). unsafe_int(Name) -> {parameter, Name, int}. -file("src/roundabout/internal/parameter.gleam", 36). ?DOC(false). -spec unsafe_str(binary()) -> parameter(any()). unsafe_str(Name) -> {parameter, Name, str}. -file("src/roundabout/internal/parameter.gleam", 40). ?DOC(false). -spec qualify_name( roundabout@internal@ancestors:ancestors(roundabout@internal@type_name:type_name()), roundabout@internal@type_name:type_name(), parameter(roundabout@internal@qualified:unqualified()) ) -> parameter(roundabout@internal@qualified:qualified()). qualify_name(Ancestors, Node_name, P) -> Qualified_name = begin _pipe = Ancestors, _pipe@1 = roundabout@internal@ancestors:filter( _pipe, fun(A) -> not roundabout@internal@type_name:is_root(A) end ), _pipe@2 = roundabout@internal@ancestors:push(_pipe@1, Node_name), _pipe@3 = roundabout@internal@ancestors:map( _pipe@2, fun roundabout@internal@type_name:name/1 ), _pipe@4 = roundabout@internal@ancestors:push( _pipe@3, erlang:element(2, P) ), _pipe@5 = roundabout@internal@ancestors:to_list(_pipe@4), _pipe@6 = gleam@string:join(_pipe@5, <<"_"/utf8>>), justin:snake_case(_pipe@6) end, {parameter, Qualified_name, erlang:element(3, P)}. -file("src/roundabout/internal/parameter.gleam", 58). ?DOC(false). -spec kind(parameter(any())) -> kind(). kind(P) -> erlang:element(3, P). -file("src/roundabout/internal/parameter.gleam", 62). ?DOC(false). -spec print_type_name(parameter(any())) -> binary(). print_type_name(P) -> case erlang:element(3, P) of str -> <<"String"/utf8>>; int -> <<"Int"/utf8>> end. -file("src/roundabout/internal/parameter.gleam", 69). ?DOC(false). -spec print_name_qualified(parameter(roundabout@internal@qualified:qualified())) -> binary(). print_name_qualified(P) -> erlang:element(2, P). -file("src/roundabout/internal/parameter.gleam", 73). ?DOC(false). -spec print_name(parameter(any())) -> binary(). print_name(P) -> erlang:element(2, P). -file("src/roundabout/internal/parameter.gleam", 77). ?DOC(false). -spec print_name_and_type(parameter(any())) -> binary(). print_name_and_type(P) -> <<<<(print_name(P))/binary, ": "/utf8>>/binary, (print_type_name(P))/binary>>.