recrownedgtk/RecrownedAthenaeum.ConsoleTools/ConsoleUtilities.cs

52 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace RecrownedAthenaeum.Tools
{
internal class ConsoleUtilities
{
public static void WriteWrapped(string message, bool line = false)
{
message = WrapMessageToConsoleWidth(message);
if (line) message = message + "\n";
Console.Write(message);
}
public static string WrapMessageToConsoleWidth(string message)
{
string[] words = message.Split(' ');
StringBuilder stringBuilder = new StringBuilder();
int currentLineSize = 0;
for (int i = 0; i < words.Length; i++)
{
if (currentLineSize + words[i].Length >= Console.BufferWidth - Console.CursorLeft -1)
{
currentLineSize = 0;
stringBuilder.AppendLine();
}
if (words[i].Contains("\n"))
{
currentLineSize = 0;
}
currentLineSize += words[i].Length + 1;
if (words[i].Contains("\n"))
{
currentLineSize -= 2;
}
stringBuilder.Append(words[i]);
if (i + 1 < words.Length)
{
stringBuilder.Append(' ');
}
}
return stringBuilder.ToString();
}
public static void WriteWrappedLine(string message)
{
WriteWrapped(message, true);
}
}
}