@@ -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
311317const FG_COLOR : anstyle:: Color = anstyle:: Color :: Ansi ( anstyle:: AnsiColor :: White ) ;
0 commit comments