// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)

using System.Text;
using System;

namespace Fungus
{
    /// <summary>
    /// Misc string formatting functions.
    /// </summary>
    public static class StringFormatter
    {
        public static string[] FormatEnumNames(Enum e, string firstLabel)
        {
            string[] enumLabels = Enum.GetNames(e.GetType());
            enumLabels[0] = firstLabel;
            for (int i=0; i<enumLabels.Length; i++)
            {
                enumLabels[i] = SplitCamelCase(enumLabels[i]);
            }
            return enumLabels;
        }

        public static string SplitCamelCase(string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                return "";
            }

            StringBuilder newText = new StringBuilder(text.Length * 2);
            newText.Append(text[0]);
            for (int i = 1; i < text.Length; i++)
            {
                if (char.IsUpper(text[i]) && text[i - 1] != ' ')
                {
                    newText.Append(' ');
                }
                newText.Append(text[i]);
            }
            return newText.ToString();
        }

        public static bool IsNullOrWhiteSpace(string value)
        {
            if (value != null)
            {
                for (int i = 0; i < value.Length; i++)
                {
                    if (!char.IsWhiteSpace(value[i]))
                    {
                        return false;
                    }
                }
            }
            return true;
        }
    }    
}