namespace PlotLine.Models; public static class SceneTitleDisplay { public static string Format(int sceneNumber, string? title) => Format((decimal)sceneNumber, title); public static string Format(decimal sceneNumber, string? title) { var number = $"Scene {sceneNumber:0.##}"; var cleanTitle = Clean(title); if (string.IsNullOrWhiteSpace(cleanTitle) || IsDefaultSceneTitle(cleanTitle, sceneNumber)) { return number; } return $"{number} \u00b7 {cleanTitle}"; } public static string? Clean(string? title) { if (string.IsNullOrWhiteSpace(title)) { return null; } var clean = string.Join(' ', title.Trim().Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries)); return string.IsNullOrWhiteSpace(clean) ? null : clean; } private static bool IsDefaultSceneTitle(string title, decimal sceneNumber) => string.Equals(title, $"Scene {sceneNumber:0.##}", StringComparison.OrdinalIgnoreCase) || string.Equals(title, $"Scene {sceneNumber:N0}", StringComparison.OrdinalIgnoreCase); }