From 81ceae9028a51af03cbe384d8871ed8d3856bfa0 Mon Sep 17 00:00:00 2001 From: Thibaut Decombe Date: Fri, 9 Aug 2024 15:51:00 +0200 Subject: [PATCH] [Refacto] Compute `formatted_tag_name` only once --- markup_fmt/src/printer.rs | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/markup_fmt/src/printer.rs b/markup_fmt/src/printer.rs index 907206f..25c84fe 100644 --- a/markup_fmt/src/printer.rs +++ b/markup_fmt/src/printer.rs @@ -400,6 +400,17 @@ impl<'s> DocGen<'s> for Element<'s> { .split_once(':') .and_then(|(namespace, name)| namespace.eq_ignore_ascii_case("html").then_some(name)) .unwrap_or(self.tag_name); + let formatted_tag_name = if matches!( + ctx.language, + Language::Html | Language::Jinja | Language::Vento + ) && css_dataset::tags::STANDARD_HTML_TAGS + .iter() + .any(|tag| tag.eq_ignore_ascii_case(self.tag_name)) + { + Cow::from(self.tag_name.to_ascii_lowercase()) + } else { + Cow::from(self.tag_name) + }; let is_root = state.is_root; let mut state = State { current_tag_name: Some(tag_name), @@ -407,12 +418,6 @@ impl<'s> DocGen<'s> for Element<'s> { in_svg: tag_name.eq_ignore_ascii_case("svg"), indent_level: state.indent_level, }; - let should_lower_cased = matches!( - ctx.language, - Language::Html | Language::Jinja | Language::Vento - ) && css_dataset::tags::STANDARD_HTML_TAGS - .iter() - .any(|tag| tag.eq_ignore_ascii_case(self.tag_name)); let self_closing = if helpers::is_void_element(tag_name, ctx.language) { ctx.options @@ -447,11 +452,7 @@ impl<'s> DocGen<'s> for Element<'s> { let mut docs = Vec::with_capacity(5); docs.push(Doc::text("<")); - docs.push(Doc::text(if should_lower_cased { - Cow::from(self.tag_name.to_ascii_lowercase()) - } else { - Cow::from(self.tag_name) - })); + docs.push(Doc::text(formatted_tag_name.clone())); match self.attrs.as_slice() { [single_attr] if !is_whitespace_sensitive => { @@ -777,11 +778,7 @@ impl<'s> DocGen<'s> for Element<'s> { docs.push( Doc::text("")) .group(),