PlotDirector/PlotLine/Models/SceneTitleDisplay.cs

35 lines
1.1 KiB
C#

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);
}