using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Jace.Util
{
    /// 
    /// Utility methods of Jace.NET that can be used throughout the engine.
    /// 
    internal  static class EngineUtil
    {
        static internal IDictionary ConvertVariableNamesToLowerCase(IDictionary variables)
        {
            Dictionary temp = new Dictionary();
            foreach (KeyValuePair keyValuePair in variables)
            {
                temp.Add(keyValuePair.Key.ToLowerFast(), keyValuePair.Value);
            }
            return temp;
        }
        // This is a fast ToLower for strings that are in ASCII
        static internal string ToLowerFast(this string text)
        {
            StringBuilder buffer = new StringBuilder(text.Length);
            for(int i = 0; i < text.Length; i++)
            {
                char c = text[i];
                if (c >= 'A' && c <= 'Z')
                {
                    buffer.Append((char)(c + 32));
                }
                else 
                {
                    buffer.Append(c);
                }
            }
            return buffer.ToString();
        }
    }
}