using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace ResBuilder
{
    static class LuaFileTools
    {

        static readonly Regex mlc = new Regex(@"--\[(=*)\[(.|\n)*?\]\1\]", RegexOptions.Multiline);
        static Regex slc = new Regex("--(.*?)\r?\n", RegexOptions.Singleline);

        internal static string RemoveLuaFileComment(string filePath, StringBuilder changes)
        {
            changes.AppendLine("=====================================" + filePath);
            var str = File.ReadAllText(filePath, Tools.UTF8);
            str = str.TrimEnd() + '\n';
            str = mlc.Replace(str, (m) =>
            {
                var mstr = m.Value;

                changes.AppendLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                changes.AppendLine(mstr);

                StringBuilder ret = new StringBuilder();
                foreach (var c in mstr)
                {
                    if (c == '\n')
                    {
                        ret.Append(c);
                    }
                }
                return ret.ToString();
            });

            str = slc.Replace(str, (m) =>
            {
                var mstr = m.Value;

                changes.AppendLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                changes.AppendLine(mstr);

                if (mstr.IndexOf('\"') >= 0 && Tools.ExistCharInLineBefore(str, m.Index, '\"'))
                {
                    return mstr;
                }
                if (mstr.IndexOf('\'') >= 0 && Tools.ExistCharInLineBefore(str, m.Index, '\''))
                {
                    return mstr;
                }
                return "\n";
            });

            return str;
        }
    }
}