Skip to content

Commit 9c2b802

Browse files
committed
fix(roff): Minimize size of output
1 parent 133f306 commit 9c2b802

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

crates/anstyle-roff/src/lib.rs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,25 @@ mod control_requests {
3838
/// ```
3939
pub fn to_roff(styled_text: &str) -> Roff {
4040
let mut doc = Roff::new();
41+
let mut previous_fg_color = None;
42+
let mut previous_bg_color = None;
4143
for styled in styled_str::styled_stream(styled_text) {
42-
add_color_to_roff(
43-
&mut doc,
44-
control_requests::FOREGROUND,
45-
&styled.style.get_fg_color(),
46-
);
47-
add_color_to_roff(
48-
&mut doc,
49-
control_requests::BACKGROUND,
50-
&styled.style.get_bg_color(),
51-
);
44+
if previous_fg_color != styled.style.get_fg_color() {
45+
add_color_to_roff(
46+
&mut doc,
47+
control_requests::FOREGROUND,
48+
&styled.style.get_fg_color(),
49+
);
50+
previous_fg_color = styled.style.get_fg_color();
51+
}
52+
if previous_bg_color != styled.style.get_bg_color() {
53+
add_color_to_roff(
54+
&mut doc,
55+
control_requests::BACKGROUND,
56+
&styled.style.get_bg_color(),
57+
);
58+
previous_bg_color = styled.style.get_bg_color();
59+
}
5260
set_effects_and_text(&styled, &mut doc);
5361
}
5462
doc
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
.gcolor default
2-
.fcolor default
31
\fBtest\fR
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
.gcolor default
2-
.fcolor default
31
\fItest\fR

0 commit comments

Comments
 (0)