-module(proute@generate@page_input). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/proute/generate/page_input.gleam"). -export([generate/1]). -file("src/proute/generate/page_input.gleam", 97). -spec route_fields(list(proute@discover:route_param())) -> binary(). route_fields(Params) -> _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>>). -file("src/proute/generate/page_input.gleam", 90). -spec source_file_label(binary()) -> binary(). source_file_label(Source_file) -> case gleam@string:split(Source_file, <<"/pages/"/utf8>>) of [_, Relative] -> <<"pages/"/utf8, Relative/binary>>; _ -> Source_file end. -file("src/proute/generate/page_input.gleam", 84). -spec route_page_label(proute@discover:page_route()) -> binary(). route_page_label(Route) -> _pipe = erlang:element(7, Route), _pipe@1 = gleam@string:replace(_pipe, <<"\\"/utf8>>, <<"/"/utf8>>), source_file_label(_pipe@1). -file("src/proute/generate/page_input.gleam", 69). -spec route_params_record(proute@discover:page_route()) -> binary(). route_params_record(Route) -> <<<<<<<<<<<<<<<<<<<<<<"/// Route parameters for `"/utf8, (route_page_label(Route))/binary>>/binary, "`.\n"/utf8>>/binary, "pub type "/utf8>>/binary, (erlang:element(3, Route))/binary>>/binary, "RouteParams {\n"/utf8>>/binary, " "/utf8>>/binary, (erlang:element(3, Route))/binary>>/binary, "RouteParams("/utf8>>/binary, (route_fields(erlang:element(6, Route)))/binary>>/binary, ")\n"/utf8>>/binary, "}\n"/utf8>>. -file("src/proute/generate/page_input.gleam", 63). -spec route_params(list(proute@discover:page_route())) -> binary(). route_params(Routes) -> _pipe = Routes, _pipe@1 = gleam@list:map(_pipe, fun route_params_record/1), gleam@string:join(_pipe@1, <<"\n"/utf8>>). -file("src/proute/generate/page_input.gleam", 49). -spec query_params() -> binary(). query_params() -> <<<<<<<<<<<<<<<<<<<<"/// Query parameters parsed from the current URL.\n"/utf8, "///\n"/utf8>>/binary, "/// Query strings are open-ended and can repeat keys, so generated code stores\n"/utf8>>/binary, "/// the decoded pairs instead of forcing a fixed record shape.\n"/utf8>>/binary, "pub type QueryParams {\n"/utf8>>/binary, " QueryParams(values: List(#(String, String)))\n"/utf8>>/binary, "}\n\n"/utf8>>/binary, "/// Build an empty query param bag.\n"/utf8>>/binary, "pub fn empty_query_params() -> QueryParams {\n"/utf8>>/binary, " QueryParams([])\n"/utf8>>/binary, "}\n"/utf8>>. -file("src/proute/generate/page_input.gleam", 31). -spec header_body(binary(), list(proute@discover:page_route())) -> binary(). header_body(Mount_name, Dynamic_routes) -> case Dynamic_routes of [] -> <<<<<<<<"//// The "/utf8, Mount_name/binary>>/binary, " routes currently have no dynamic route params, but page dispatch\n"/utf8>>/binary, "//// still receives query params through the same generated input convention as\n"/utf8>>/binary, "//// other mounts.\n"/utf8>>; _ -> <<<<"//// Pages receive route parameters and query parameters as named values instead\n"/utf8, "//// of a growing list of positional arguments. Nested dynamic routes can add\n"/utf8>>/binary, "//// fields to the route params record without changing the meaning of call sites.\n"/utf8>> end. -file("src/proute/generate/page_input.gleam", 18). -spec header(binary(), list(proute@discover:page_route())) -> binary(). header(Mount_name, Dynamic_routes) -> <<<<<<<<<<<<"//// Generated page input types. Do not edit.\n"/utf8, "////\n"/utf8>>/binary, "//// mount: "/utf8>>/binary, Mount_name/binary>>/binary, "\n"/utf8>>/binary, "////\n"/utf8>>/binary, (header_body(Mount_name, Dynamic_routes))/binary>>. -file("src/proute/generate/page_input.gleam", 5). -spec generate(proute@discover:mount_routes()) -> binary(). generate(Mount_routes) -> {mount_routes, Mount, Routes} = Mount_routes, Dynamic_routes = begin _pipe = Routes, gleam@list:filter( _pipe, fun(Route) -> erlang:element(6, Route) /= [] end ) end, _pipe@1 = [header(erlang:element(2, Mount), Dynamic_routes), query_params(), route_params(Dynamic_routes)], _pipe@2 = gleam@list:filter( _pipe@1, fun(Section) -> Section /= <<""/utf8>> end ), gleam@string:join(_pipe@2, <<"\n"/utf8>>).