-module(proute@generate@routes).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/proute/generate/routes.gleam").
-export([generate/1]).
-file("src/proute/generate/routes.gleam", 474).
-spec trim_trailing_slash() -> binary().
trim_trailing_slash() ->
<<<<<<<<<<<<"fn trim_trailing_slash(origin: String) -> String {\n"/utf8,
" use <- bool.guard(\n"/utf8>>/binary,
" when: string.ends_with(origin, \"/\") == False,\n"/utf8>>/binary,
" return: origin,\n"/utf8>>/binary,
" )\n"/utf8>>/binary,
" string.drop_end(origin, 1)\n"/utf8>>/binary,
"}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 525).
-spec has_dynamic_routes(list(proute@discover:page_route())) -> boolean().
has_dynamic_routes(Routes) ->
_pipe = Routes,
gleam@list:any(_pipe, fun(Route) -> erlang:element(6, Route) /= [] end).
-file("src/proute/generate/routes.gleam", 461).
-spec percent_decode(list(proute@discover:page_route())) -> binary().
percent_decode(Routes) ->
case has_dynamic_routes(Routes) of
false ->
<<""/utf8>>;
true ->
<<<<<<<<<<"fn percent_decode(value: String) -> Result(String, Nil) {\n"/utf8,
" case uri.percent_decode(value) {\n"/utf8>>/binary,
" Ok(decoded) -> Ok(decoded)\n"/utf8>>/binary,
" Error(_) -> Error(Nil)\n"/utf8>>/binary,
" }\n"/utf8>>/binary,
"}\n"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 381).
-spec helper_params(proute@discover:page_route()) -> binary().
helper_params(Route) ->
_pipe = erlang:element(6, Route),
_pipe@1 = gleam@list:map(
_pipe,
fun(Param) ->
<<<<<<<<(erlang:element(2, Param))/binary, " "/utf8>>/binary,
(erlang:element(2, Param))/binary>>/binary,
": "/utf8>>/binary,
(erlang:element(3, Param))/binary>>
end
),
gleam@string:join(_pipe@1, <<", "/utf8>>).
-file("src/proute/generate/routes.gleam", 395).
-spec url_params(proute@discover:page_route()) -> binary().
url_params(Route) ->
case helper_params(Route) of
<<""/utf8>> ->
<<"origin origin: String"/utf8>>;
Params ->
<<Params/binary, ", origin origin: String"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 448).
-spec plain_route_name(proute@discover:page_route()) -> binary().
plain_route_name(Route) ->
_pipe = erlang:element(3, Route),
_pipe@1 = proute@names:snake_case(_pipe),
gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<" "/utf8>>).
-file("src/proute/generate/routes.gleam", 440).
-spec route_label(proute@config:mount(), proute@discover:page_route()) -> binary().
route_label(Mount, Route) ->
case erlang:element(2, Route) of
home ->
<<(erlang:element(2, Mount))/binary, " homepage"/utf8>>;
not_found ->
<<(erlang:element(2, Mount))/binary, " not-found"/utf8>>;
_ ->
plain_route_name(Route)
end.
-file("src/proute/generate/routes.gleam", 389).
-spec helper_args(proute@discover:page_route()) -> binary().
helper_args(Route) ->
_pipe = erlang:element(6, Route),
_pipe@1 = gleam@list:map(
_pipe,
fun(Param) -> <<(erlang:element(2, Param))/binary, ":"/utf8>> end
),
gleam@string:join(_pipe@1, <<", "/utf8>>).
-file("src/proute/generate/routes.gleam", 402).
-spec constructor_args(proute@discover:page_route()) -> binary().
constructor_args(Route) ->
case helper_args(Route) of
<<""/utf8>> ->
<<""/utf8>>;
Args ->
<<<<"("/utf8, Args/binary>>/binary, ")"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 416).
-spec path_helper_comment(proute@config:mount(), proute@discover:page_route()) -> binary().
path_helper_comment(Mount, Route) ->
case erlang:element(2, Route) of
not_found ->
<<<<"Build the canonical "/utf8, (erlang:element(2, Mount))/binary>>/binary,
" not-found path."/utf8>>;
_ ->
case erlang:element(6, Route) of
[] ->
<<<<"Build the "/utf8, (plain_route_name(Route))/binary>>/binary,
" path."/utf8>>;
[Param] ->
<<<<<<<<"Build the "/utf8,
(plain_route_name(Route))/binary>>/binary,
" path, percent-encoding `"/utf8>>/binary,
(erlang:element(2, Param))/binary>>/binary,
"`."/utf8>>;
_ ->
<<<<"Build the "/utf8, (plain_route_name(Route))/binary>>/binary,
" path, percent-encoding its parameters."/utf8>>
end
end.
-file("src/proute/generate/routes.gleam", 377).
-spec helper_name(proute@discover:page_route()) -> binary().
helper_name(Route) ->
proute@names:helper_name(erlang:element(3, Route)).
-file("src/proute/generate/routes.gleam", 328).
-spec helper(proute@config:mount(), proute@discover:page_route()) -> binary().
helper(Mount, Route) ->
Name = helper_name(Route),
Params = helper_params(Route),
Args = helper_args(Route),
Path_comment = path_helper_comment(Mount, Route),
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"/// Construct the "/utf8,
(route_label(
Mount,
Route
))/binary>>/binary,
" route.\n"/utf8>>/binary,
"pub fn "/utf8>>/binary,
Name/binary>>/binary,
"_route("/utf8>>/binary,
Params/binary>>/binary,
") -> Route {\n"/utf8>>/binary,
" "/utf8>>/binary,
(erlang:element(
3,
Route
))/binary>>/binary,
(constructor_args(
Route
))/binary>>/binary,
"\n"/utf8>>/binary,
"}\n\n"/utf8>>/binary,
"/// "/utf8>>/binary,
Path_comment/binary>>/binary,
"\n"/utf8>>/binary,
"pub fn "/utf8>>/binary,
Name/binary>>/binary,
"_path("/utf8>>/binary,
Params/binary>>/binary,
") -> String {\n"/utf8>>/binary,
" route_to_path("/utf8>>/binary,
Name/binary>>/binary,
"_route("/utf8>>/binary,
Args/binary>>/binary,
"))\n"/utf8>>/binary,
"}\n\n"/utf8>>/binary,
"/// Build an absolute URL for the "/utf8>>/binary,
(route_label(
Mount,
Route
))/binary>>/binary,
" route.\n"/utf8>>/binary,
"pub fn "/utf8>>/binary,
Name/binary>>/binary,
"_url("/utf8>>/binary,
(url_params(Route))/binary>>/binary,
") -> String {\n"/utf8>>/binary,
" route_to_url(route: "/utf8>>/binary,
Name/binary>>/binary,
"_route("/utf8>>/binary,
Args/binary>>/binary,
"), origin:)\n"/utf8>>/binary,
"}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 322).
-spec helpers(proute@config:mount(), list(proute@discover:page_route())) -> binary().
helpers(Mount, Routes) ->
_pipe = Routes,
_pipe@1 = gleam@list:map(
_pipe,
fun(_capture) -> helper(Mount, _capture) end
),
gleam@string:join(_pipe@1, <<"\n"/utf8>>).
-file("src/proute/generate/routes.gleam", 454).
-spec article(binary()) -> binary().
article(Word) ->
case begin
_pipe = Word,
_pipe@1 = string:lowercase(_pipe),
gleam@string:to_graphemes(_pipe@1)
end of
[<<"a"/utf8>> | _] ->
<<"an"/utf8>>;
[<<"e"/utf8>> | _] ->
<<"an"/utf8>>;
[<<"i"/utf8>> | _] ->
<<"an"/utf8>>;
[<<"o"/utf8>> | _] ->
<<"an"/utf8>>;
[<<"u"/utf8>> | _] ->
<<"an"/utf8>>;
_ ->
<<"a"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 306).
-spec route_to_url(proute@config:mount()) -> binary().
route_to_url(Mount) ->
<<<<<<<<<<<<<<<<<<<<<<<<"/// Build an absolute URL for "/utf8,
(article(
erlang:element(2, Mount)
))/binary>>/binary,
" "/utf8>>/binary,
(erlang:element(2, Mount))/binary>>/binary,
" route.\n"/utf8>>/binary,
"///\n"/utf8>>/binary,
"/// `origin` must be the explicit scheme and authority, such as\n"/utf8>>/binary,
"/// `https://example.com` or `http://localhost:8080`. One trailing slash is\n"/utf8>>/binary,
"/// trimmed before appending the route path. The generated module does not\n"/utf8>>/binary,
"/// guess the origin from request headers because that policy belongs to the app.\n"/utf8>>/binary,
"pub fn route_to_url(route route: Route, origin origin: String) -> String {\n"/utf8>>/binary,
" trim_trailing_slash(origin) <> route_to_path(route)\n"/utf8>>/binary,
"}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 299).
-spec join_path_expression(list(binary())) -> binary().
join_path_expression(Segments) ->
case Segments of
[] ->
gleam@string:inspect(<<"/"/utf8>>);
_ ->
_pipe = Segments,
gleam@string:join(_pipe, <<" <> "/utf8>>)
end.
-file("src/proute/generate/routes.gleam", 269).
-spec path_expression_segments(list(binary()), binary(), list(binary())) -> list(binary()).
path_expression_segments(Segments, Static_prefix, Built) ->
case Segments of
[] ->
case Static_prefix of
<<""/utf8>> ->
lists:reverse(Built);
_ ->
lists:reverse([gleam@string:inspect(Static_prefix) | Built])
end;
[Segment | Rest] ->
case gleam_stdlib:string_starts_with(Segment, <<":"/utf8>>) of
true ->
Built@1 = case Static_prefix of
<<""/utf8>> ->
Built;
_ ->
[gleam@string:inspect(
<<Static_prefix/binary, "/"/utf8>>
) |
Built]
end,
Param = gleam@string:drop_start(Segment, 1),
path_expression_segments(
Rest,
<<""/utf8>>,
[<<<<"uri.percent_encode("/utf8, Param/binary>>/binary,
")"/utf8>> |
Built@1]
);
false ->
path_expression_segments(
Rest,
<<<<Static_prefix/binary, "/"/utf8>>/binary,
Segment/binary>>,
Built
)
end
end.
-file("src/proute/generate/routes.gleam", 261).
-spec route_path_expression(proute@discover:page_route()) -> binary().
route_path_expression(Route) ->
_pipe = erlang:element(4, Route),
_pipe@1 = gleam@string:split(_pipe, <<"/"/utf8>>),
_pipe@2 = gleam@list:filter(
_pipe@1,
fun(Segment) -> Segment /= <<""/utf8>> end
),
_pipe@3 = path_expression_segments(_pipe@2, <<""/utf8>>, []),
join_path_expression(_pipe@3).
-file("src/proute/generate/routes.gleam", 409).
-spec constructor_pattern(proute@discover:page_route()) -> binary().
constructor_pattern(Route) ->
case helper_args(Route) of
<<""/utf8>> ->
erlang:element(3, Route);
Args ->
<<<<<<(erlang:element(3, Route))/binary, "("/utf8>>/binary,
Args/binary>>/binary,
")"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 252).
-spec route_to_path_case(proute@discover:page_route()) -> binary().
route_to_path_case(Route) ->
Pattern = constructor_pattern(Route),
case erlang:element(6, Route) of
[] ->
<<<<Pattern/binary, " -> "/utf8>>/binary,
(gleam@string:inspect(erlang:element(4, Route)))/binary>>;
_ ->
<<<<Pattern/binary, " -> "/utf8>>/binary,
(route_path_expression(Route))/binary>>
end.
-file("src/proute/generate/routes.gleam", 236).
-spec route_to_path_comment(
proute@config:mount(),
list(proute@discover:page_route())
) -> binary().
route_to_path_comment(Mount, Routes) ->
Base = [<<"`NotFound` points to the canonical not-found path declared by"/utf8>>,
<<"`not_found_.gleam`, which keeps 404 links from pretending to be the"/utf8>>,
<<(erlang:element(2, Mount))/binary, " homepage."/utf8>>],
case has_dynamic_routes(Routes) of
true ->
proute@generate@text:doc_lines(
[<<"Dynamic parameters are percent-encoded."/utf8>> | Base]
);
false ->
proute@generate@text:doc_lines(Base)
end.
-file("src/proute/generate/routes.gleam", 218).
-spec route_to_path(proute@config:mount(), list(proute@discover:page_route())) -> binary().
route_to_path(Mount, Routes) ->
<<<<<<<<<<<<<<<<<<<<<<"/// Convert "/utf8,
(article(
erlang:element(2, Mount)
))/binary>>/binary,
" "/utf8>>/binary,
(erlang:element(2, Mount))/binary>>/binary,
" route value into its canonical path.\n"/utf8>>/binary,
"///\n"/utf8>>/binary,
(route_to_path_comment(Mount, Routes))/binary>>/binary,
"pub fn route_to_path(route: Route) -> String {\n"/utf8>>/binary,
" case route {\n"/utf8>>/binary,
(proute@generate@text:indent_multiline(
begin
_pipe = Routes,
_pipe@1 = gleam@list:map(
_pipe,
fun route_to_path_case/1
),
gleam@string:join(_pipe@1, <<"\n"/utf8>>)
end,
4
))/binary>>/binary,
"\n }\n"/utf8>>/binary,
"}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 185).
-spec nested_dynamic_decode(
proute@discover:page_route(),
list(proute@discover:route_param()),
list(binary())
) -> binary().
nested_dynamic_decode(Route, Params, Decoded) ->
case Params of
[] ->
<<<<<<(erlang:element(3, Route))/binary, "("/utf8>>/binary,
(begin
_pipe = Decoded,
_pipe@1 = lists:reverse(_pipe),
_pipe@2 = gleam@list:map(
_pipe@1,
fun(Name) -> <<Name/binary, ":"/utf8>> end
),
gleam@string:join(_pipe@2, <<", "/utf8>>)
end)/binary>>/binary,
")"/utf8>>;
[Param | Rest] ->
<<<<<<<<<<<<<<<<<<"case percent_decode("/utf8,
(erlang:element(2, Param))/binary>>/binary,
") {\n"/utf8>>/binary,
" Ok("/utf8>>/binary,
(erlang:element(2, Param))/binary>>/binary,
") -> "/utf8>>/binary,
(proute@generate@text:indent_multiline(
nested_dynamic_decode(
Route,
Rest,
[erlang:element(2, Param) | Decoded]
),
2
))/binary>>/binary,
"\n"/utf8>>/binary,
" Error(Nil) -> NotFound\n"/utf8>>/binary,
"}"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 166).
-spec dynamic_decode(proute@discover:page_route()) -> binary().
dynamic_decode(Route) ->
case erlang:element(6, Route) of
[Param] ->
<<<<<<<<<<<<<<<<<<<<<<"case percent_decode("/utf8,
(erlang:element(
2,
Param
))/binary>>/binary,
") {\n"/utf8>>/binary,
" Ok("/utf8>>/binary,
(erlang:element(2, Param))/binary>>/binary,
") -> "/utf8>>/binary,
(erlang:element(3, Route))/binary>>/binary,
"("/utf8>>/binary,
(erlang:element(2, Param))/binary>>/binary,
":)\n"/utf8>>/binary,
" Error(Nil) -> NotFound\n"/utf8>>/binary,
"}"/utf8>>;
Params ->
nested_dynamic_decode(Route, Params, [])
end.
-file("src/proute/generate/routes.gleam", 512).
-spec parse_pattern_segment(proute@discover:route_segment()) -> binary().
parse_pattern_segment(Segment) ->
case Segment of
{static_segment, Value} ->
gleam@string:inspect(Value);
{dynamic_segment, Name} ->
Name
end.
-file("src/proute/generate/routes.gleam", 498).
-spec segment_pattern_without_rest(list(proute@discover:route_segment())) -> binary().
segment_pattern_without_rest(Segments) ->
case Segments of
[] ->
<<"[]"/utf8>>;
_ ->
<<<<"["/utf8,
(begin
_pipe = Segments,
_pipe@1 = gleam@list:map(
_pipe,
fun parse_pattern_segment/1
),
gleam@string:join(_pipe@1, <<", "/utf8>>)
end)/binary>>/binary,
"]"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 153).
-spec parse_case(proute@discover:page_route()) -> binary().
parse_case(Route) ->
case erlang:element(6, Route) of
[] ->
<<<<(segment_pattern_without_rest(erlang:element(5, Route)))/binary,
" -> "/utf8>>/binary,
(erlang:element(3, Route))/binary>>;
_ ->
<<<<(segment_pattern_without_rest(erlang:element(5, Route)))/binary,
" ->\n"/utf8>>/binary,
(proute@generate@text:indent_lines(dynamic_decode(Route)))/binary>>
end.
-file("src/proute/generate/routes.gleam", 141).
-spec parse_function(list(proute@discover:page_route())) -> binary().
parse_function(Routes) ->
<<<<<<<<<<"fn parse(segments: List(String)) -> Route {\n"/utf8,
" case segments {\n"/utf8>>/binary,
(proute@generate@text:indent_multiline(
begin
_pipe = Routes,
_pipe@1 = gleam@list:map(_pipe, fun parse_case/1),
gleam@string:join(_pipe@1, <<"\n"/utf8>>)
end,
4
))/binary>>/binary,
"\n _ -> NotFound\n"/utf8>>/binary,
" }\n"/utf8>>/binary,
"}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 484).
-spec segment_pattern(list(binary())) -> binary().
segment_pattern(Segments) ->
case Segments of
[] ->
<<"[..rest]"/utf8>>;
_ ->
<<<<"["/utf8,
(begin
_pipe = Segments,
_pipe@1 = gleam@list:map(
_pipe,
fun gleam@string:inspect/1
),
gleam@string:join(_pipe@1, <<", "/utf8>>)
end)/binary>>/binary,
", ..rest]"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 519).
-spec route_root_segments(binary()) -> list(binary()).
route_root_segments(Route_root) ->
_pipe = Route_root,
_pipe@1 = gleam@string:split(_pipe, <<"/"/utf8>>),
gleam@list:filter(_pipe@1, fun(Segment) -> Segment /= <<""/utf8>> end).
-file("src/proute/generate/routes.gleam", 124).
-spec root_parser(proute@config:mount()) -> binary().
root_parser(Mount) ->
case erlang:element(4, Mount) of
<<"/"/utf8>> ->
<<" parse(uri.path_segments(without_fragment))\n"/utf8>>;
_ ->
Root_segments = begin
_pipe = erlang:element(4, Mount),
route_root_segments(_pipe)
end,
<<<<<<<<<<<<" let segments = uri.path_segments(without_fragment)\n\n"/utf8,
" case segments {\n"/utf8>>/binary,
" "/utf8>>/binary,
(segment_pattern(Root_segments))/binary>>/binary,
" -> parse(rest)\n"/utf8>>/binary,
" _ -> NotFound\n"/utf8>>/binary,
" }\n"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 96).
-spec parse_comment(proute@config:mount(), list(proute@discover:page_route())) -> binary().
parse_comment(Mount, Routes) ->
Base = [<<"The input may include a query string or fragment; both are ignored."/utf8>>],
With_mount = case erlang:element(4, Mount) of
<<"/"/utf8>> ->
Base;
_ ->
lists:append(
Base,
[<<<<"The path must be rooted at `"/utf8,
(erlang:element(4, Mount))/binary>>/binary,
"`; paths outside that mount return `NotFound`."/utf8>>,
<<"This lets each"/utf8>>,
<<"mount own its own route tree without knowing about sibling mounts."/utf8>>]
)
end,
Lines = case has_dynamic_routes(Routes) of
true ->
lists:append(
With_mount,
[<<"Dynamic path parameters are percent-decoded after path segmentation,"/utf8>>,
<<"so encoded slashes stay inside the parameter value. Invalid percent"/utf8>>,
<<"encoding in a dynamic segment returns `NotFound`."/utf8>>]
);
false ->
With_mount
end,
proute@generate@text:doc_lines(Lines).
-file("src/proute/generate/routes.gleam", 76).
-spec parse_path(proute@config:mount(), list(proute@discover:page_route())) -> binary().
parse_path(Mount, Routes) ->
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"/// Parse a request path into the "/utf8,
(erlang:element(
2,
Mount
))/binary>>/binary,
" route tree.\n"/utf8>>/binary,
"///\n"/utf8>>/binary,
(parse_comment(
Mount,
Routes
))/binary>>/binary,
"pub fn parse_path(raw: String) -> Route {\n"/utf8>>/binary,
" let without_query = case string.split(raw, \"?\") {\n"/utf8>>/binary,
" [path, ..] -> path\n"/utf8>>/binary,
" [] -> raw\n"/utf8>>/binary,
" }\n"/utf8>>/binary,
" let without_fragment = case string.split(without_query, \"#\") {\n"/utf8>>/binary,
" [path, ..] -> path\n"/utf8>>/binary,
" [] -> without_query\n"/utf8>>/binary,
" }\n"/utf8>>/binary,
(root_parser(Mount))/binary>>/binary,
"}\n\n"/utf8>>/binary,
(parse_function(Routes))/binary>>.
-file("src/proute/generate/routes.gleam", 61).
-spec route_constructor(proute@discover:page_route()) -> binary().
route_constructor(Route) ->
case erlang:element(6, Route) of
[] ->
erlang:element(3, Route);
Params ->
<<<<<<(erlang:element(3, Route))/binary, "("/utf8>>/binary,
(begin
_pipe = Params,
_pipe@1 = gleam@list:map(
_pipe,
fun(Param) ->
<<<<(erlang:element(2, Param))/binary,
": "/utf8>>/binary,
(erlang:element(3, Param))/binary>>
end
),
gleam@string:join(_pipe@1, <<", "/utf8>>)
end)/binary>>/binary,
")"/utf8>>
end.
-file("src/proute/generate/routes.gleam", 530).
-spec title_name(binary()) -> binary().
title_name(Name) ->
proute@names:pascal_case(Name).
-file("src/proute/generate/routes.gleam", 44).
-spec route_type(proute@config:mount(), list(proute@discover:page_route())) -> binary().
route_type(Mount, Routes) ->
<<<<<<<<<<<<<<<<<<<<<<"/// "/utf8,
(title_name(
erlang:element(2, Mount)
))/binary>>/binary,
" routes generated from `"/utf8>>/binary,
(erlang:element(3, Mount))/binary>>/binary,
"`.\n"/utf8>>/binary,
"///\n"/utf8>>/binary,
"/// These constructors are the stable vocabulary callers use instead of\n"/utf8>>/binary,
"/// passing raw strings around. If a page file disappears, callers using\n"/utf8>>/binary,
"/// its constructor or helper should fail at compile time.\n"/utf8>>/binary,
"pub type Route {\n"/utf8>>/binary,
(proute@generate@text:indent_lines(
begin
_pipe = Routes,
_pipe@1 = gleam@list:map(_pipe, fun route_constructor/1),
gleam@string:join(_pipe@1, <<"\n"/utf8>>)
end
))/binary>>/binary,
"\n}\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 40).
-spec imports() -> binary().
imports() ->
<<<<"import gleam/bool\n"/utf8, "import gleam/string\n"/utf8>>/binary,
"import gleam/uri\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 26).
-spec header(proute@config:mount()) -> binary().
header(Mount) ->
<<<<<<<<<<<<<<<<<<<<"//// Generated. Do not edit.\n"/utf8, "////\n"/utf8>>/binary,
"//// mount: "/utf8>>/binary,
(erlang:element(2, Mount))/binary>>/binary,
"\n"/utf8>>/binary,
"//// pages: "/utf8>>/binary,
(erlang:element(3, Mount))/binary>>/binary,
"\n"/utf8>>/binary,
"//// route_root: "/utf8>>/binary,
(erlang:element(4, Mount))/binary>>/binary,
"\n"/utf8>>.
-file("src/proute/generate/routes.gleam", 8).
-spec generate(proute@discover:mount_routes()) -> binary().
generate(Mount_routes) ->
{mount_routes, Mount, Routes} = Mount_routes,
_pipe = [header(Mount),
imports(),
route_type(Mount, Routes),
parse_path(Mount, Routes),
route_to_path(Mount, Routes),
route_to_url(Mount),
helpers(Mount, Routes),
percent_decode(Routes),
trim_trailing_slash()],
_pipe@1 = gleam@list:filter(
_pipe,
fun(Section) -> Section /= <<""/utf8>> end
),
gleam@string:join(_pipe@1, <<"\n"/utf8>>).