From 420392bc16330af6a659738e40cb01d18535d333 Mon Sep 17 00:00:00 2001 From: schvv31n Date: Sat, 30 Nov 2024 20:09:09 +0000 Subject: [PATCH] silenced non-normalised element name warnings for SVG elements --- .../yew-macro/src/html_tree/html_element.rs | 43 ++++++++++++++++++- packages/yew-macro/tests/html_macro_test.rs | 2 +- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/packages/yew-macro/src/html_tree/html_element.rs b/packages/yew-macro/src/html_tree/html_element.rs index ee588305de6..452d9bca4d3 100644 --- a/packages/yew-macro/src/html_tree/html_element.rs +++ b/packages/yew-macro/src/html_tree/html_element.rs @@ -11,6 +11,45 @@ use crate::props::{ElementProps, Prop, PropDirective}; use crate::stringify::{Stringify, Value}; use crate::{is_ide_completion, non_capitalized_ascii, Peek, PeekValue}; +fn is_normalised_element_name(name: &str) -> bool { + match name { + | "animateMotion" + | "animateTransform" + | "clipPath" + | "feBlend" + | "feColorMatrix" + | "feComponentTransfer" + | "feComposite" + | "feConvolveMatrix" + | "feDiffuseLighting" + | "feDisplacementMap" + | "feDistantLight" + | "feDropShadow" + | "feFlood" + | "feFuncA" + | "feFuncB" + | "feFuncG" + | "feFuncR" + | "feGaussianBlur" + | "feImage" + | "feMerge" + | "feMergeNode" + | "feMorphology" + | "feOffset" + | "fePointLight" + | "feSpecularLighting" + | "feSpotLight" + | "feTile" + | "feTurbulence" + | "foreignObject" + | "glyphRef" + | "linearGradient" + | "radialGradient" + | "textPath" => true, + _ => name.chars().all(|c| c.is_ascii_lowercase()), + } +} + pub struct HtmlElement { pub name: TagName, pub props: ElementProps, @@ -310,9 +349,9 @@ impl ToTokens for HtmlElement { TagName::Lit(dashedname) => { let name_span = dashedname.span(); let name = dashedname.to_ascii_lowercase_string(); - if name != dashedname.to_string() { + if !is_normalised_element_name(&dashedname.to_string()) { emit_warning!( - dashedname.span(), + name_span.clone(), format!( "The tag '{dashedname}' is not matching its normalized form '{name}'. If you want \ to keep this form, change this to a dynamic tag `@{{\"{dashedname}\"}}`." diff --git a/packages/yew-macro/tests/html_macro_test.rs b/packages/yew-macro/tests/html_macro_test.rs index 69d62934bfa..7b410d8aa63 100644 --- a/packages/yew-macro/tests/html_macro_test.rs +++ b/packages/yew-macro/tests/html_macro_test.rs @@ -35,7 +35,7 @@ fn dynamic_tags_catch_non_ascii() { #[test] fn html_nested_macro_on_html_element() { let _node = html_nested! { -
+ }; let _node = html_nested! {