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; } } }