From 5d0258dfb0c6adef4ebb36988b53c4694355fd3d Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 17 Aug 2025 16:54:14 +0100 Subject: [PATCH] Colorify SCSI MODE PAGE 0Dh --- Aaru.Decoders/SCSI/Modes/0D.cs | 54 ++++++++++++++++++---------------- Aaru.Helpers/MarkupHelpers.cs | 27 +++++++++++++++++ 2 files changed, 55 insertions(+), 26 deletions(-) create mode 100644 Aaru.Helpers/MarkupHelpers.cs diff --git a/Aaru.Decoders/SCSI/Modes/0D.cs b/Aaru.Decoders/SCSI/Modes/0D.cs index 251e3eac7..5444bbbfc 100644 --- a/Aaru.Decoders/SCSI/Modes/0D.cs +++ b/Aaru.Decoders/SCSI/Modes/0D.cs @@ -85,89 +85,91 @@ public static partial class Modes ModePage_0D page = modePage.Value; var sb = new StringBuilder(); - sb.AppendLine(Localization.SCSI_CD_ROM_parameters_page); + sb.AppendLine($"[bold][blue]{Localization.SCSI_CD_ROM_parameters_page}[/][/]"); - if(page.PS) sb.AppendLine("\t" + Localization.Parameters_can_be_saved); + if(page.PS) sb.AppendLine($"\t[green]{Localization.Parameters_can_be_saved}[/]"); switch(page.InactivityTimerMultiplier) { case 0: - sb.AppendLine("\t" + - Localization - .Drive_will_remain_in_track_hold_state_a_vendor_specified_time_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{Localization.Drive_will_remain_in_track_hold_state_a_vendor_specified_time_after_a_seek_or_read}[/]"); break; case 1: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_125_ms_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_125_ms_after_a_seek_or_read, "lime")}[/]"); break; case 2: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_250_ms_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_250_ms_after_a_seek_or_read, "lime")}[/]"); break; case 3: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_500_ms_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_500_ms_after_a_seek_or_read, "lime")}[/]"); break; case 4: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_1_second_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_1_second_after_a_seek_or_read, "lime")}[/]"); break; case 5: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_2_seconds_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_2_seconds_after_a_seek_or_read, "lime")}[/]"); break; case 6: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_4_seconds_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_4_seconds_after_a_seek_or_read, "lime")}[/]"); break; case 7: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_8_seconds_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_8_seconds_after_a_seek_or_read, "lime")}[/]"); break; case 8: - sb.AppendLine("\t" + - Localization.Drive_will_remain_in_track_hold_state_16_seconds_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{ + MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_16_seconds_after_a_seek_or_read, "lime")}[/]"); break; case 9: - sb.AppendLine("\t" + - Localization.Drive_will_remain_in_track_hold_state_32_seconds_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{ + MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_32_seconds_after_a_seek_or_read, "lime")}[/]"); break; case 10: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_1_minute_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_1_minute_after_a_seek_or_read, "lime")}[/]"); break; case 11: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_2_minutes_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_2_minutes_after_a_seek_or_read, "lime")}[/]"); break; case 12: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_4_minutes_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_4_minutes_after_a_seek_or_read, "lime")}[/]"); break; case 13: - sb.AppendLine("\t" + Localization.Drive_will_remain_in_track_hold_state_8_minutes_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_8_minutes_after_a_seek_or_read, "lime")}[/]"); break; case 14: - sb.AppendLine("\t" + - Localization.Drive_will_remain_in_track_hold_state_16_minutes_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{ + MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_16_minutes_after_a_seek_or_read, "lime")}[/]"); break; case 15: - sb.AppendLine("\t" + - Localization.Drive_will_remain_in_track_hold_state_32_minutes_after_a_seek_or_read); + sb.AppendLine($"\t[slateblue1]{ + MarkupHelper.HighlightNumbers(Localization.Drive_will_remain_in_track_hold_state_32_minutes_after_a_seek_or_read, "lime")}[/]"); break; } if(page.SecondsPerMinute > 0) - sb.AppendFormat("\t" + Localization.Each_minute_has_0_seconds, page.SecondsPerMinute).AppendLine(); + sb.AppendFormat($"\t[slateblue1]{Localization.Each_minute_has_0_seconds}[/]", + $"[lime]{page.SecondsPerMinute}[/]") + .AppendLine(); if(page.FramesPerSecond > 0) - sb.AppendFormat("\t" + Localization.Each_second_has_0_frames, page.FramesPerSecond).AppendLine(); + sb.AppendFormat($"\t[slateblue1]{Localization.Each_second_has_0_frames}[/]", + $"[lime]{page.FramesPerSecond}[/]") + .AppendLine(); return sb.ToString(); } diff --git a/Aaru.Helpers/MarkupHelpers.cs b/Aaru.Helpers/MarkupHelpers.cs new file mode 100644 index 000000000..61118c4f2 --- /dev/null +++ b/Aaru.Helpers/MarkupHelpers.cs @@ -0,0 +1,27 @@ +using System.Text.RegularExpressions; + +public static class MarkupHelper +{ + public static string HighlightNumbers(string input, string color, bool italicize = false) + { + if(string.IsNullOrEmpty(input) || string.IsNullOrEmpty(color)) return input; + + // Match integers and decimals (e.g., 42, 3.14, -7) + string pattern = @"(?