Skip to content

Commit 19bcf3c

Browse files
Create new SpanKind type to be used in write_bg_span and write_fg_span functions
1 parent 8fa9ec3 commit 19bcf3c

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

crates/anstyle-svg/src/lib.rs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ impl Term {
186186
if element.text.is_empty() {
187187
continue;
188188
}
189-
write_bg_span(&mut buffer, "tspan", &element.style, &element.text);
189+
write_bg_span(&mut buffer, SpanKind::Tspan, &element.style, &element.text);
190190
}
191191
// HACK: must close tspan on newline to include them in copy/paste
192192
writeln!(&mut buffer).unwrap();
@@ -198,7 +198,7 @@ impl Term {
198198
if element.text.is_empty() {
199199
continue;
200200
}
201-
write_fg_span(&mut buffer, "tspan", element, &element.text);
201+
write_fg_span(&mut buffer, SpanKind::Tspan, element, &element.text);
202202
}
203203
// HACK: must close tspan on newline to include them in copy/paste
204204
writeln!(&mut buffer).unwrap();
@@ -312,7 +312,7 @@ impl Term {
312312
if element.text.is_empty() {
313313
continue;
314314
}
315-
write_bg_span(buffer, "span", &element.style, &element.text);
315+
write_bg_span(buffer, SpanKind::Span, &element.style, &element.text);
316316
}
317317
buffer.write_str(br).unwrap();
318318
}
@@ -321,7 +321,7 @@ impl Term {
321321
if element.text.is_empty() {
322322
continue;
323323
}
324-
write_fg_span(buffer, "span", element, &element.text);
324+
write_fg_span(buffer, SpanKind::Span, element, &element.text);
325325
}
326326
buffer.write_str(br).unwrap();
327327
}
@@ -430,7 +430,22 @@ fn write_effects_in_use(buffer: &mut String, elements: &[adapter::Element]) {
430430
}
431431
}
432432

433-
fn write_fg_span(buffer: &mut String, span: &str, element: &adapter::Element, fragment: &str) {
433+
#[derive(PartialEq)]
434+
enum SpanKind {
435+
Tspan,
436+
Span,
437+
}
438+
439+
impl std::fmt::Display for SpanKind {
440+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
441+
match self {
442+
Self::Tspan => f.write_str("tspan"),
443+
Self::Span => f.write_str("span"),
444+
}
445+
}
446+
}
447+
448+
fn write_fg_span(buffer: &mut String, span: SpanKind, element: &adapter::Element, fragment: &str) {
434449
use std::fmt::Write as _;
435450
let style = element.style;
436451
let fg_color = style.get_fg_color().map(|c| color_name(FG_PREFIX, c));
@@ -508,7 +523,7 @@ fn write_fg_span(buffer: &mut String, span: &str, element: &adapter::Element, fr
508523
write!(buffer, r#"</{span}>"#).unwrap();
509524
}
510525

511-
fn write_bg_span(buffer: &mut String, span: &str, style: &anstyle::Style, fragment: &str) {
526+
fn write_bg_span(buffer: &mut String, span: SpanKind, style: &anstyle::Style, fragment: &str) {
512527
use std::fmt::Write as _;
513528
use unicode_width::UnicodeWidthStr;
514529

0 commit comments

Comments
 (0)