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:
1 parent
dd8e69635b
commit
08da9a1253
17 files changed
+550
-190
No files matched your search
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user