Ejemplo n.º 1
0
        public void Parse()
        {
            // PC名を置換する
            this.ReplacePCName();

            var log = this.LogReplacedPCName;

            int.TryParse(
                this.LogType,
                NumberStyles.HexNumber,
                CultureInfo.InvariantCulture,
                out int detectedType);

            // ログメッセージタイプの文言を除去する
            log = LogMessageTypeExtensions.RemoveLogMessageType(
                detectedType,
                log,
                true);

            // ツールチップシンボル, ワールド名を除去する
            log = LogParser.RemoveTooltipSynbols(log);
            log = LogParser.RemoveWorldName(log);

            // ログを互換形式に変換する
            log = LogParser.FormatLogLine(
                detectedType,
                log);

            this.ParsedLog = log;
        }
Ejemplo n.º 2
0
        private static void MigrateConfig(
            string file)
        {
            var buffer = new StringBuilder();

            buffer.Append(File.ReadAllText(file, new UTF8Encoding(false)));

            var xdoc      = XDocument.Parse(buffer.ToString());
            var xelements = xdoc.Root.Elements();

            if (xelements.Any(x => x.Name == nameof(GlobalLogFilters)))
            {
                var filtersParent = xelements
                                    .FirstOrDefault(x => x.Name == nameof(GlobalLogFilters));

                var filters = filtersParent.Elements();

                var typeNames = LogMessageTypeExtensions.GetNames();

                // 消滅したLogTypeを削除する
                var toRemove = filters
                               .Where(x => !typeNames.Contains(x.Attribute("Key").Value))
                               .ToArray();

                foreach (var e in toRemove)
                {
                    e.Remove();
                }

                // 新しく増えたLogTypeを追加する
                var toAdd = typeNames
                            .Where(x => !filters.Any(y => y.Attribute("Key").Value == x));

                foreach (var key in toAdd)
                {
                    var e = new XElement("Filter");
                    e.SetAttributeValue("Key", key);
                    e.SetAttributeValue("Value", false);
                    filtersParent.Add(e);
                }
            }

            File.WriteAllText(file, xdoc.ToString(), DefaultEncoding);
        }