private StringsDiff CreateDiff(List <string> left, List <string> right) { bool ignoreCase = ((_config.Globals.Paths & PathOperations.IgnoreCase) != 0); StringComparer cmp = ignoreCase ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; var leftSet = new HashSet <string>(left, cmp); var rightSet = new HashSet <string>(right, cmp); var diff = new StringsDiff(); if ((_config.Globals.Ignore & IgnoreFlags.Left) == 0) { diff.Left = leftSet.Except(rightSet, cmp).ToList(); diff.Left.Sort(); } if ((_config.Globals.Ignore & IgnoreFlags.Both) == 0) { diff.Both = leftSet.Intersect(rightSet, cmp).ToList(); diff.Both.Sort(); } if ((_config.Globals.Ignore & IgnoreFlags.Right) == 0) { diff.Right = rightSet.Except(leftSet, cmp).ToList(); diff.Right.Sort(); } return(diff); }
private void OutputStringsDiff(StringsDiff diff) { OutputDiffList("Left", diff.Left); OutputDiffList("Both", diff.Both); OutputDiffList("Right", diff.Right); }