Skip to content

Commit 6ba4c30

Browse files
Split rendering of SpanKind::Tspan and SpanKind::Span
1 parent 839ef19 commit 6ba4c30

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

crates/anstyle-svg/src/lib.rs

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

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-
}
511507
let mut need_closing_a = false;
512508

513-
write!(buffer, r#"<{span}"#).unwrap();
514-
write_classes(buffer, classes);
515-
write!(buffer, r#">"#).unwrap();
516-
if let Some(hyperlink) = &element.url {
517-
write!(buffer, r#"<a href="{hyperlink}">"#).unwrap();
518-
need_closing_a = true;
519-
}
520-
write!(buffer, "{fragment}").unwrap();
521-
if need_closing_a {
522-
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+
}
523542
}
524-
write!(buffer, r#"</{span}>"#).unwrap();
525543
}
526544

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

0 commit comments

Comments
 (0)