diff --git a/SabreTools.CommandLine/Inputs/UserInput.cs b/SabreTools.CommandLine/Inputs/UserInput.cs
index 52b1541..d72abbc 100644
--- a/SabreTools.CommandLine/Inputs/UserInput.cs
+++ b/SabreTools.CommandLine/Inputs/UserInput.cs
@@ -704,6 +704,13 @@ namespace SabreTools.CommandLine.Inputs
/// Pre-split output lines
private List FormatLongDescription(int pre, int midpoint)
{
+ // If the long description is null or empty
+ if (string.IsNullOrEmpty(_longDescription))
+ return [];
+
+ // Normalize the description for output
+ string longDescription = _longDescription!.Replace("\r\n", "\n");
+
// Create the output list
List outputList = [];
@@ -715,16 +722,16 @@ namespace SabreTools.CommandLine.Inputs
output.Append(CreatePadding(pre + 4));
// Now split the input description and start processing
- string[]? split = _longDescription?.Split(' ');
- if (split == null)
- return outputList;
-
+ string[]? split = longDescription.Split(' ');
for (int i = 0; i < split.Length; i++)
{
+ // Cache the current segment
+ string segment = split[i];
+
// If we have a newline character, reset the line and continue
- if (split[i].Contains("\n"))
+ if (segment.Contains("\n"))
{
- string[] subsplit = split[i].Replace("\r", string.Empty).Split('\n');
+ string[] subsplit = segment.Split('\n');
for (int j = 0; j < subsplit.Length - 1; j++)
{
// Add the next word only if the total length doesn't go above the width of the screen
@@ -737,7 +744,7 @@ namespace SabreTools.CommandLine.Inputs
{
outputList.Add(output.ToString());
#if NET20 || NET35
- output = new();
+ output = new();
#else
output.Clear();
#endif
@@ -747,7 +754,7 @@ namespace SabreTools.CommandLine.Inputs
outputList.Add(output.ToString());
#if NET20 || NET35
- output = new();
+ output = new();
#else
output.Clear();
#endif
@@ -759,16 +766,16 @@ namespace SabreTools.CommandLine.Inputs
}
// Add the next word only if the total length doesn't go above the width of the screen
- if (output.Length + split[i].Length < width)
+ if (output.Length + segment.Length < width)
{
- output.Append((output.Length == pre + 4 ? string.Empty : " ") + split[i]);
+ output.Append((output.Length == pre + 4 ? string.Empty : " ") + segment);
}
// Otherwise, we want to cache the line to output and create a new blank string
else
{
outputList.Add(output.ToString());
output.Append(CreatePadding(pre + 4));
- output.Append((output.Length == pre + 4 ? string.Empty : " ") + split[i]);
+ output.Append((output.Length == pre + 4 ? string.Empty : " ") + segment);
}
}