-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(EHB) :: {parameter, roundabout@internal@name:name(), kind()} | {gleam_phantom, EHB}. -file("src/roundabout/internal/parameter.gleam", 19). ?DOC(false). -spec new(binary(), kind()) -> {ok, parameter(roundabout@internal@qualified:unqualified())} | {error, binary()}. new(Name, Kind) -> gleam@result:'try'( roundabout@internal@name:new(Name), fun(Name@1) -> {ok, {parameter, Name@1, Kind}} end ). -file("src/roundabout/internal/parameter.gleam", 25). ?DOC(false). -spec unsafe(binary(), kind()) -> parameter(any()). unsafe(Name, Kind) -> {parameter, roundabout@internal@name:unsafe(Name), Kind}. -file("src/roundabout/internal/parameter.gleam", 29). ?DOC(false). -spec unsafe_int(binary()) -> parameter(any()). unsafe_int(Name) -> {parameter, roundabout@internal@name:unsafe(Name), int}. -file("src/roundabout/internal/parameter.gleam", 33). ?DOC(false). -spec unsafe_str(binary()) -> parameter(any()). unsafe_str(Name) -> {parameter, roundabout@internal@name:unsafe(Name), str}. -file("src/roundabout/internal/parameter.gleam", 37). ?DOC(false). -spec qualify_name( roundabout@internal@ancestors:ancestors(roundabout@internal@name:name()), roundabout@internal@name: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@name:is_root(A) end ), _pipe@2 = roundabout@internal@ancestors:push(_pipe@1, Node_name), _pipe@3 = roundabout@internal@ancestors:push( _pipe@2, erlang:element(2, P) ), _pipe@4 = roundabout@internal@ancestors:to_list(_pipe@3), _pipe@5 = gleam@list:map( _pipe@4, fun roundabout@internal@name:parameter_name/1 ), gleam@string:join(_pipe@5, <<"-"/utf8>>) end, {parameter, roundabout@internal@name:unsafe(Qualified_name), erlang:element(3, P)}. -file("src/roundabout/internal/parameter.gleam", 54). ?DOC(false). -spec kind(parameter(any())) -> kind(). kind(P) -> erlang:element(3, P). -file("src/roundabout/internal/parameter.gleam", 58). ?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", 65). ?DOC(false). -spec print_name_qualified(parameter(roundabout@internal@qualified:qualified())) -> binary(). print_name_qualified(P) -> roundabout@internal@name:parameter_name(erlang:element(2, P)). -file("src/roundabout/internal/parameter.gleam", 69). ?DOC(false). -spec print_name(parameter(any())) -> binary(). print_name(P) -> roundabout@internal@name:parameter_name(erlang:element(2, P)). -file("src/roundabout/internal/parameter.gleam", 73). ?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>>.