From 134a45b89d9c8213dd3c6e0ea4efd175300c081d Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Sat, 10 Dec 2022 14:58:13 -0600 Subject: [PATCH 1/2] fix fmt escape sequences in static attribute/text nodes --- packages/rsx/src/lib.rs | 45 ++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/packages/rsx/src/lib.rs b/packages/rsx/src/lib.rs index ccfcda8fa..f8a8bbddc 100644 --- a/packages/rsx/src/lib.rs +++ b/packages/rsx/src/lib.rs @@ -182,30 +182,36 @@ impl<'a> DynamicContext<'a> { let static_attrs = el.attributes.iter().map(|attr| match &attr.attr { ElementAttr::AttrText { name, value } if value.is_static() => { - let value = value.source.as_ref().unwrap(); - quote! { - ::dioxus::core::TemplateAttribute::Static { - name: dioxus_elements::#el_name::#name.0, - namespace: dioxus_elements::#el_name::#name.1, - value: #value, + if let Some(value) = value.to_static() { + quote! { + ::dioxus::core::TemplateAttribute::Static { + name: dioxus_elements::#el_name::#name.0, + namespace: dioxus_elements::#el_name::#name.1, + value: #value, - // todo: we don't diff these so we never apply the volatile flag - // volatile: dioxus_elements::#el_name::#name.2, + // todo: we don't diff these so we never apply the volatile flag + // volatile: dioxus_elements::#el_name::#name.2, + } } + } else { + unreachable!() } } ElementAttr::CustomAttrText { name, value } if value.is_static() => { - let value = value.source.as_ref().unwrap(); - quote! { - ::dioxus::core::TemplateAttribute::Static { - name: #name, - namespace: None, - value: #value, + if let Some(value) = value.to_static() { + quote! { + ::dioxus::core::TemplateAttribute::Static { + name: #name, + namespace: None, + value: #value, - // todo: we don't diff these so we never apply the volatile flag - // volatile: dioxus_elements::#el_name::#name.2, + // todo: we don't diff these so we never apply the volatile flag + // volatile: dioxus_elements::#el_name::#name.2, + } } + } else { + unreachable!() } } @@ -244,8 +250,11 @@ impl<'a> DynamicContext<'a> { } BodyNode::Text(text) if text.is_static() => { - let text = text.source.as_ref().unwrap(); - quote! { ::dioxus::core::TemplateNode::Text{ text: #text } } + if let Some(text) = text.to_static() { + quote! { ::dioxus::core::TemplateNode::Text{ text: #text } } + } else { + unreachable!() + } } BodyNode::RawExpr(_) From 3e7dbe868abe5593715d9cb91a734eecfd09fd34 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Sat, 10 Dec 2022 15:05:41 -0600 Subject: [PATCH 2/2] unwrap instead of using unreachable --- packages/rsx/src/lib.rs | 45 +++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/packages/rsx/src/lib.rs b/packages/rsx/src/lib.rs index f8a8bbddc..913ff8660 100644 --- a/packages/rsx/src/lib.rs +++ b/packages/rsx/src/lib.rs @@ -182,36 +182,30 @@ impl<'a> DynamicContext<'a> { let static_attrs = el.attributes.iter().map(|attr| match &attr.attr { ElementAttr::AttrText { name, value } if value.is_static() => { - if let Some(value) = value.to_static() { - quote! { - ::dioxus::core::TemplateAttribute::Static { - name: dioxus_elements::#el_name::#name.0, - namespace: dioxus_elements::#el_name::#name.1, - value: #value, + let value = value.to_static().unwrap(); + quote! { + ::dioxus::core::TemplateAttribute::Static { + name: dioxus_elements::#el_name::#name.0, + namespace: dioxus_elements::#el_name::#name.1, + value: #value, - // todo: we don't diff these so we never apply the volatile flag - // volatile: dioxus_elements::#el_name::#name.2, - } + // todo: we don't diff these so we never apply the volatile flag + // volatile: dioxus_elements::#el_name::#name.2, } - } else { - unreachable!() } } ElementAttr::CustomAttrText { name, value } if value.is_static() => { - if let Some(value) = value.to_static() { - quote! { - ::dioxus::core::TemplateAttribute::Static { - name: #name, - namespace: None, - value: #value, + let value = value.to_static().unwrap(); + quote! { + ::dioxus::core::TemplateAttribute::Static { + name: #name, + namespace: None, + value: #value, - // todo: we don't diff these so we never apply the volatile flag - // volatile: dioxus_elements::#el_name::#name.2, - } + // todo: we don't diff these so we never apply the volatile flag + // volatile: dioxus_elements::#el_name::#name.2, } - } else { - unreachable!() } } @@ -250,11 +244,8 @@ impl<'a> DynamicContext<'a> { } BodyNode::Text(text) if text.is_static() => { - if let Some(text) = text.to_static() { - quote! { ::dioxus::core::TemplateNode::Text{ text: #text } } - } else { - unreachable!() - } + let text = text.to_static().unwrap(); + quote! { ::dioxus::core::TemplateNode::Text{ text: #text } } } BodyNode::RawExpr(_)