35 lines
1.1 KiB
C#
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);
|
|
}
|