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