create non generic wrappers for each route

This commit is contained in:
Evan Almloff committed 2023-05-23 19:31:30 -05:00
1 parent 3678fa1d3f
commit d3b21879fb
9 files changed
+58 -32

No files matched your search

+21
View File
@@ -32,8 +32,26 @@ pub fn routable(input: TokenStream) -> TokenStream {
let parse_impl = route_enum.parse_impl();
let display_impl = route_enum.impl_display();
let routable_impl = route_enum.routable_impl();
let name = &route_enum.name;
let vis = &route_enum.vis;
quote! {
#vis fn Outlet(cx: dioxus::prelude::Scope) -> dioxus::prelude::Element {
dioxus_router::prelude::GenericOutlet::<#name>(cx)
}
#vis fn Router(cx: dioxus::prelude::Scope<dioxus_router::prelude::GenericRouterProps<#name>>) -> dioxus::prelude::Element {
dioxus_router::prelude::GenericRouter(cx)
}
#vis fn Link<'a>(cx: dioxus::prelude::Scope<'a, dioxus_router::prelude::GenericLinkProps<'a, #name>>) -> dioxus::prelude::Element<'a> {
dioxus_router::prelude::GenericLink(cx)
}
#vis fn use_router<R: dioxus_router::prelude::Routable + Clone>(cx: &dioxus::prelude::ScopeState) -> &dioxus_router::prelude::GenericRouterContext<R> {
dioxus_router::prelude::use_generic_router::<R>(cx)
}
#route_enum
#error_type
@@ -48,6 +66,7 @@ pub fn routable(input: TokenStream) -> TokenStream {
}
struct RouteEnum {
vis: syn::Visibility,
name: Ident,
routes: Vec<Route>,
nests: Vec<Nest>,
@@ -58,6 +77,7 @@ struct RouteEnum {
impl RouteEnum {
fn parse(data: syn::ItemEnum) -> syn::Result<Self> {
let name = &data.ident;
let vis = &data.vis;
let mut site_map = Vec::new();
let mut site_map_stack: Vec<Vec<SiteMapSegment>> = Vec::new();
@@ -201,6 +221,7 @@ impl RouteEnum {
}
let myself = Self {
vis: vis.clone(),
name: name.clone(),
routes,
nests,