Current section

Files

Jump to
roundabout src roundabout@internal@parameter.erl
Raw

src/roundabout@internal@parameter.erl

-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 => <<?FILEPATH/utf8>>,
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>>.