Skip to content

Commit e514fbf

Browse files
Create new Term::render_classes method
1 parent 93ad6c2 commit e514fbf

1 file changed

Lines changed: 40 additions & 34 deletions

File tree

crates/anstyle-svg/src/lib.rs

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,6 @@ impl Term {
218218

219219
let styled_lines = split_lines(&elements);
220220

221-
let fg_color = rgb_value(self.fg_color, self.palette);
222-
let bg_color = rgb_value(self.bg_color, self.palette);
223-
let font_family = self.font_family;
224-
225221
let mut buffer = String::new();
226222
writeln!(&mut buffer, r#"<!DOCTYPE html>"#).unwrap();
227223
writeln!(&mut buffer, r#"<html>"#).unwrap();
@@ -238,36 +234,7 @@ impl Term {
238234
)
239235
.unwrap();
240236
writeln!(&mut buffer, r#" <style>"#).unwrap();
241-
writeln!(&mut buffer, r#" .{FG} {{ color: {fg_color} }}"#).unwrap();
242-
writeln!(&mut buffer, r#" .{BG} {{ background: {bg_color} }}"#).unwrap();
243-
for (name, rgb) in color_styles(&elements, self.palette) {
244-
if name.starts_with(FG_PREFIX) {
245-
writeln!(&mut buffer, r#" .{name} {{ color: {rgb} }}"#).unwrap();
246-
}
247-
if name.starts_with(BG_PREFIX) {
248-
writeln!(
249-
&mut buffer,
250-
r#" .{name} {{ background: {rgb}; user-select: none; }}"#
251-
)
252-
.unwrap();
253-
}
254-
if name.starts_with(UNDERLINE_PREFIX) {
255-
writeln!(
256-
&mut buffer,
257-
r#" .{name} {{ text-decoration-line: underline; text-decoration-color: {rgb} }}"#
258-
)
259-
.unwrap();
260-
}
261-
}
262-
writeln!(&mut buffer, r#" .container {{"#).unwrap();
263-
writeln!(&mut buffer, r#" line-height: {LINE_HEIGHT}px;"#).unwrap();
264-
writeln!(&mut buffer, r#" }}"#).unwrap();
265-
write_effects_in_use(&mut buffer, &elements);
266-
writeln!(&mut buffer, r#" span {{"#).unwrap();
267-
writeln!(&mut buffer, r#" font: 14px {font_family};"#).unwrap();
268-
writeln!(&mut buffer, r#" white-space: pre;"#).unwrap();
269-
writeln!(&mut buffer, r#" line-height: {LINE_HEIGHT}px;"#).unwrap();
270-
writeln!(&mut buffer, r#" }}"#).unwrap();
237+
self.render_classes(&mut buffer, &elements);
271238
writeln!(&mut buffer, r#" </style>"#).unwrap();
272239
writeln!(&mut buffer, r#"</head>"#).unwrap();
273240
writeln!(&mut buffer).unwrap();
@@ -306,6 +273,45 @@ impl Term {
306273
writeln!(&mut buffer, r#"</html>"#).unwrap();
307274
buffer
308275
}
276+
277+
fn render_classes(&self, buffer: &mut String, elements: &[adapter::Element]) {
278+
use std::fmt::Write as _;
279+
280+
let fg_color = rgb_value(self.fg_color, self.palette);
281+
let bg_color = rgb_value(self.bg_color, self.palette);
282+
let font_family = self.font_family;
283+
284+
writeln!(buffer, r#" .{FG} {{ color: {fg_color} }}"#).unwrap();
285+
writeln!(buffer, r#" .{BG} {{ background: {bg_color} }}"#).unwrap();
286+
for (name, rgb) in color_styles(elements, self.palette) {
287+
if name.starts_with(FG_PREFIX) {
288+
writeln!(buffer, r#" .{name} {{ color: {rgb} }}"#).unwrap();
289+
}
290+
if name.starts_with(BG_PREFIX) {
291+
writeln!(
292+
buffer,
293+
r#" .{name} {{ background: {rgb}; user-select: none; }}"#
294+
)
295+
.unwrap();
296+
}
297+
if name.starts_with(UNDERLINE_PREFIX) {
298+
writeln!(
299+
buffer,
300+
r#" .{name} {{ text-decoration-line: underline; text-decoration-color: {rgb} }}"#
301+
)
302+
.unwrap();
303+
}
304+
}
305+
writeln!(buffer, r#" .container {{"#).unwrap();
306+
writeln!(buffer, r#" line-height: {LINE_HEIGHT}px;"#).unwrap();
307+
writeln!(buffer, r#" }}"#).unwrap();
308+
write_effects_in_use(buffer, elements);
309+
writeln!(buffer, r#" span {{"#).unwrap();
310+
writeln!(buffer, r#" font: 14px {font_family};"#).unwrap();
311+
writeln!(buffer, r#" white-space: pre;"#).unwrap();
312+
writeln!(buffer, r#" line-height: {LINE_HEIGHT}px;"#).unwrap();
313+
writeln!(buffer, r#" }}"#).unwrap();
314+
}
309315
}
310316

311317
const FG_COLOR: anstyle::Color = anstyle::Color::Ansi(anstyle::AnsiColor::White);

0 commit comments

Comments
 (0)