Skip to content

Commit 3315f0a

Browse files
Split rendering of SpanKind::Tspan and SpanKind::Span
1 parent 7e28ee8 commit 3315f0a

File tree

4 files changed

+36
-14
lines changed

4 files changed

+36
-14
lines changed

crates/anstyle-svg/src/lib.rs

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -506,18 +506,40 @@ fn write_fg_span(buffer: &mut String, span: SpanKind, element: &adapter::Element
506506

507507
let mut need_closing_a = false;
508508

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();
509+
match span {
510+
SpanKind::Span => {
511+
if classes.is_empty() && element.url.is_none() {
512+
// No need to create an element if there is no class or href.
513+
write!(buffer, "{fragment}").unwrap();
514+
}
515+
write!(buffer, r#"<span"#).unwrap();
516+
write_classes(buffer, classes);
517+
write!(buffer, r#">"#).unwrap();
518+
if let Some(hyperlink) = &element.url {
519+
write!(buffer, r#"<a href="{hyperlink}">"#).unwrap();
520+
need_closing_a = true;
521+
}
522+
write!(buffer, "{fragment}").unwrap();
523+
if need_closing_a {
524+
write!(buffer, r#"</a>"#).unwrap();
525+
}
526+
write!(buffer, r#"</span>"#).unwrap();
527+
}
528+
SpanKind::Tspan => {
529+
write!(buffer, r#"<tspan"#).unwrap();
530+
write_classes(buffer, classes);
531+
write!(buffer, r#">"#).unwrap();
532+
if let Some(hyperlink) = &element.url {
533+
write!(buffer, r#"<a href="{hyperlink}">"#).unwrap();
534+
need_closing_a = true;
535+
}
536+
write!(buffer, "{fragment}").unwrap();
537+
if need_closing_a {
538+
write!(buffer, r#"</a>"#).unwrap();
539+
}
540+
write!(buffer, r#"</tspan>"#).unwrap();
541+
}
519542
}
520-
write!(buffer, r#"</{span}>"#).unwrap();
521543
}
522544

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

0 commit comments

Comments
 (0)