Implement hash fragments in the router (#2320)

* implement hash fragments in the router

* clean up query and search example

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
Evan AlmloffandJonathan Kelley authored and GitHub committed 2024-04-25 14:30:25 -04:00
1 parent dd8e69635b
commit 08da9a1253
17 files changed
+550 -190

No files matched your search

+7
View File
@@ -337,6 +337,7 @@ impl<'a> RouteTreeSegmentData<'a> {
let construct_variant = route.construct(nests, enum_name);
let parse_query = route.parse_query();
let parse_hash = route.parse_hash();
let insure_not_trailing = match route.ty {
RouteType::Leaf { .. } => route
@@ -356,6 +357,7 @@ impl<'a> RouteTreeSegmentData<'a> {
enum_variant,
&variant_parse_error,
parse_query,
parse_hash,
),
&error_enum_name,
enum_variant,
@@ -426,6 +428,7 @@ impl<'a> RouteTreeSegmentData<'a> {
.skip_while(|(_, seg)| matches!(seg, RouteSegment::Static(_)));
let parse_query = redirect.parse_query();
let parse_hash = redirect.parse_hash();
let insure_not_trailing = redirect
.segments
@@ -454,6 +457,7 @@ impl<'a> RouteTreeSegmentData<'a> {
enum_variant,
&variant_parse_error,
parse_query,
parse_hash,
),
&error_enum_name,
enum_variant,
@@ -501,6 +505,7 @@ fn return_constructed(
enum_variant: &Ident,
variant_parse_error: &Ident,
parse_query: TokenStream,
parse_hash: TokenStream,
) -> TokenStream {
if insure_not_trailing {
quote! {
@@ -514,6 +519,7 @@ fn return_constructed(
// This is the last segment, return the parsed route
(None, _) | (Some(""), None) => {
#parse_query
#parse_hash
return Ok(#construct_variant);
}
_ => {
@@ -530,6 +536,7 @@ fn return_constructed(
} else {
quote! {
#parse_query
#parse_hash
return Ok(#construct_variant);
}
}