-module(roundabout@parameter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/roundabout/parameter.gleam"). -export([new/2, unsafe/2, unsafe_int/1, name/1, kind/1, type_name/1, full/1]). -export_type([kind/0, parameter/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. -type kind() :: int | str. -opaque parameter() :: {parameter, binary(), kind()}. -file("src/roundabout/parameter.gleam", 16). ?DOC(false). -spec new(binary(), kind()) -> {ok, parameter()} | {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/parameter"/utf8>>, function => <<"new"/utf8>>, line => 17, value => _assert_fail, start => 235, 'end' => 296, pattern_start => 246, pattern_end => 252}) 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/parameter.gleam", 28). ?DOC(false). -spec unsafe(binary(), kind()) -> parameter(). unsafe(Name, Kind) -> {parameter, Name, Kind}. -file("src/roundabout/parameter.gleam", 33). ?DOC(false). -spec unsafe_int(binary()) -> parameter(). unsafe_int(Name) -> {parameter, Name, int}. -file("src/roundabout/parameter.gleam", 38). ?DOC(false). -spec name(parameter()) -> binary(). name(P) -> erlang:element(2, P). -file("src/roundabout/parameter.gleam", 43). ?DOC(false). -spec kind(parameter()) -> kind(). kind(P) -> erlang:element(3, P). -file("src/roundabout/parameter.gleam", 48). ?DOC(false). -spec type_name(parameter()) -> binary(). type_name(P) -> case erlang:element(3, P) of str -> <<"String"/utf8>>; int -> <<"Int"/utf8>> end. -file("src/roundabout/parameter.gleam", 56). ?DOC(false). -spec full(parameter()) -> binary(). full(P) -> <<<<(erlang:element(2, P))/binary, ": "/utf8>>/binary, (type_name(P))/binary>>.