예제 #1
0
        public void EasyCompareWzFiles(Wz_File fileNew, Wz_File fileOld, string outputDir)
        {
            StateInfo = "正在对比wz概况...";

            if (fileNew.Type == Wz_Type.Base || fileOld.Type == Wz_Type.Base) //至少有一个base 拆分对比
            {
                var            virtualNodeNew = RebuildWzFile(fileNew);
                var            virtualNodeOld = RebuildWzFile(fileOld);
                WzFileComparer comparer       = new WzFileComparer();
                comparer.IgnoreWzFile = true;

                var dictNew = SplitVirtualNode(virtualNodeNew);
                var dictOld = SplitVirtualNode(virtualNodeOld);

                //寻找共同wzType
                var wzTypeList = dictNew.Select(kv => kv.Key)
                                 .Where(wzType => dictOld.ContainsKey(wzType));

                CreateStyleSheet(outputDir);

                foreach (var wzType in wzTypeList)
                {
                    var vNodeNew = dictNew[wzType];
                    var vNodeOld = dictOld[wzType];
                    var cmp      = comparer.Compare(vNodeNew, vNodeOld);
                    OutputFile(vNodeNew.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(),
                               vNodeOld.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(),
                               wzType,
                               cmp.ToList(),
                               outputDir);
                }
            }
            else //执行传统对比
            {
                WzFileComparer comparer = new WzFileComparer();
                comparer.IgnoreWzFile = false;
                var cmp = comparer.Compare(fileNew.Node, fileOld.Node);
                CreateStyleSheet(outputDir);
                OutputFile(fileNew, fileOld, fileNew.Type, cmp.ToList(), outputDir);
            }

            GC.Collect();
        }
예제 #2
0
        public void EasyCompareWzFiles(Wz_File fileNew, Wz_File fileOld, string outputDir)
        {
            StateInfo = "Comparing Wz...";

            if (fileNew.Type == Wz_Type.Base || fileOld.Type == Wz_Type.Base) //At least one base split comparison
            {
                var            virtualNodeNew = RebuildWzFile(fileNew);
                var            virtualNodeOld = RebuildWzFile(fileOld);
                WzFileComparer comparer       = new WzFileComparer();
                comparer.IgnoreWzFile = true;

                var dictNew = SplitVirtualNode(virtualNodeNew);
                var dictOld = SplitVirtualNode(virtualNodeOld);

                //Find a common Wztype
                var wzTypeList = dictNew.Select(kv => kv.Key)
                                 .Where(wzType => dictOld.ContainsKey(wzType));

                CreateStyleSheet(outputDir);

                foreach (var wzType in wzTypeList)
                {
                    var vNodeNew = dictNew[wzType];
                    var vNodeOld = dictOld[wzType];
                    var cmp      = comparer.Compare(vNodeNew, vNodeOld);
                    OutputFile(vNodeNew.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(),
                               vNodeOld.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(),
                               wzType,
                               cmp.ToList(),
                               outputDir);
                }
            }
            else //Perform traditional comparisons
            {
                WzFileComparer comparer = new WzFileComparer();
                comparer.IgnoreWzFile = false;
                var cmp = comparer.Compare(fileNew.Node, fileOld.Node);
                CreateStyleSheet(outputDir);
                OutputFile(fileNew, fileOld, fileNew.Type, cmp.ToList(), outputDir);
            }

            GC.Collect();
        }