Skip to content

Commit ed7979d

Browse files
Reduce generated HTML size
1 parent ab2119d commit ed7979d

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

crates/anstyle-svg/src/lib.rs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -504,20 +504,31 @@ fn write_fg_span(buffer: &mut String, span: SpanKind, element: &adapter::Element
504504
classes.push("hidden");
505505
}
506506

507-
let mut need_closing_a = false;
508-
509-
write!(buffer, r#"<{span}"#).unwrap();
510-
write_classes(buffer, classes);
511-
write!(buffer, r#">"#).unwrap();
512-
if let Some(hyperlink) = &element.url {
513-
write!(buffer, r#"<a href="{hyperlink}">"#).unwrap();
514-
need_closing_a = true;
515-
}
516-
write!(buffer, "{fragment}").unwrap();
517-
if need_closing_a {
518-
write!(buffer, r#"</a>"#).unwrap();
507+
if span != SpanKind::Tspan && classes.is_empty() && element.url.is_none() {
508+
// No need to create an element if there is no class or href.
509+
write!(buffer, "{fragment}").unwrap();
510+
} else if span == SpanKind::Tspan {
511+
write!(buffer, "<tspan").unwrap();
512+
write_classes(buffer, classes);
513+
buffer.write_str(">").unwrap();
514+
if let Some(hyperlink) = &element.url {
515+
write!(buffer, r#"<a href="{hyperlink}">{fragment}</a>"#).unwrap();
516+
} else {
517+
write!(buffer, "{fragment}").unwrap();
518+
}
519+
write!(buffer, "</tspan>").unwrap();
520+
} else {
521+
let closing = if let Some(hyperlink) = &element.url {
522+
write!(buffer, r#"<a href="{hyperlink}"#).unwrap();
523+
"</a>"
524+
} else {
525+
write!(buffer, "<span").unwrap();
526+
"</span>"
527+
};
528+
write_classes(buffer, classes);
529+
buffer.write_str(">").unwrap();
530+
write!(buffer, "{fragment}{closing}").unwrap();
519531
}
520-
write!(buffer, r#"</{span}>"#).unwrap();
521532
}
522533

523534
fn write_bg_span(buffer: &mut String, span: SpanKind, style: &anstyle::Style, fragment: &str) {

0 commit comments

Comments
 (0)