From e43bdd815f4db8ed1032ede051baf1653f63baef Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 8 Aug 2023 11:27:29 -0700 Subject: [PATCH] fix test failures --- packages/router/src/history/mod.rs | 5 ++++- packages/router/src/hooks/use_route.rs | 2 +- packages/router/src/routable.rs | 4 ++-- packages/ssr/src/renderer.rs | 15 +++++++++++++-- packages/ssr/tests/bool_attr.rs | 1 - 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/router/src/history/mod.rs b/packages/router/src/history/mod.rs index fda386075..41a745f0c 100644 --- a/packages/router/src/history/mod.rs +++ b/packages/router/src/history/mod.rs @@ -88,15 +88,18 @@ pub trait HistoryProvider { /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } + /// # fn Other(cx: Scope) -> Element { todo!() } /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, + /// #[route("/other")] + /// Other {}, /// } /// let mut history = MemoryHistory::::default(); /// assert_eq!(history.can_go_back(), false); /// - /// history.push(Route::Index {}); + /// history.push(Route::Other {}); /// assert_eq!(history.can_go_back(), true); /// ``` #[must_use] diff --git a/packages/router/src/hooks/use_route.rs b/packages/router/src/hooks/use_route.rs index e6aa906d5..ffa9851f2 100644 --- a/packages/router/src/hooks/use_route.rs +++ b/packages/router/src/hooks/use_route.rs @@ -34,7 +34,7 @@ use crate::utils::use_router_internal::use_router_internal; /// /// #[inline_props] /// fn Index(cx: Scope) -> Element { -/// let path = use_route(&cx).unwrap(); +/// let path: Route = use_route(&cx).unwrap(); /// render! { /// h2 { "Current Path" } /// p { "{path}" } diff --git a/packages/router/src/routable.rs b/packages/router/src/routable.rs index cd3dd354d..039e449e5 100644 --- a/packages/router/src/routable.rs +++ b/packages/router/src/routable.rs @@ -162,9 +162,9 @@ pub trait Routable: std::fmt::Display + std::str::FromStr + Clone + 'static { /// /// #[derive(Routable, Clone, PartialEq, Debug)] /// enum Route { - /// #[route("/")] + /// #[route("/home")] /// Home {}, - /// #[route("/about")] + /// #[route("/home/about")] /// About {}, /// } /// diff --git a/packages/ssr/src/renderer.rs b/packages/ssr/src/renderer.rs index 873d0a036..313839520 100644 --- a/packages/ssr/src/renderer.rs +++ b/packages/ssr/src/renderer.rs @@ -1,6 +1,7 @@ use super::cache::Segment; use crate::cache::StringCache; +use dioxus_core::Attribute; use dioxus_core::{prelude::*, AttributeValue, DynamicNode, RenderReturn}; use std::collections::HashMap; use std::fmt::Write; @@ -90,8 +91,7 @@ impl Renderer { write_value(buf, &attr.value)?; } } else { - write!(buf, " {}=", attr.name)?; - write_value(buf, &attr.value)?; + write_attribute(buf, &attr)?; } } Segment::Node(idx) => match &template.dynamic_nodes[*idx] { @@ -282,6 +282,17 @@ pub(crate) fn truthy(value: &AttributeValue) -> bool { } } +pub(crate) fn write_attribute(buf: &mut impl Write, attr: &Attribute) -> std::fmt::Result { + let name = &attr.name; + match attr.value { + AttributeValue::Text(value) => write!(buf, " {name}=\"{value}\""), + AttributeValue::Bool(value) => write!(buf, " {name}={value}"), + AttributeValue::Int(value) => write!(buf, " {name}={value}"), + AttributeValue::Float(value) => write!(buf, " {name}={value}"), + _ => Ok(()), + } +} + pub(crate) fn write_value(buf: &mut impl Write, value: &AttributeValue) -> std::fmt::Result { match value { AttributeValue::Text(value) => write!(buf, "\"{}\"", value), diff --git a/packages/ssr/tests/bool_attr.rs b/packages/ssr/tests/bool_attr.rs index b7720532d..778e90dcc 100644 --- a/packages/ssr/tests/bool_attr.rs +++ b/packages/ssr/tests/bool_attr.rs @@ -21,7 +21,6 @@ fn static_boolean_attributs() { #[test] fn dynamic_boolean_attributs() { fn app(cx: Scope) -> Element { - let inner_html = "
1234
"; render! { div { hidden: false } div { hidden: true }