예제 #1
0
        private MatchResult doFullMatch(MergeRequestKey mrk, Core.Matching.DiffRefs refs,
                                        MatchInfo matchInfo, out DiffPosition position)
        {
            if (!matchInfo.IsValid())
            {
                position = null;
                return(MatchResult.Error);
            }

            MatchResult fileMatchResult = matchFileName(mrk, refs, matchInfo.LeftFileName, matchInfo.RightFileName,
                                                        matchInfo.IsLeftSideLineNumber, out string leftFileName, out string rightFileName);

            if (fileMatchResult != MatchResult.Success)
            {
                position = null;
                return(fileMatchResult);
            }

            MatchResult lineMatchResult = matchLineNumber(leftFileName, rightFileName, refs, matchInfo.LineNumber,
                                                          matchInfo.IsLeftSideLineNumber, out string leftLineNumber, out string rightLineNumber);

            if (lineMatchResult != MatchResult.Success)
            {
                position = null;
                return(fileMatchResult);
            }

            position = new DiffPosition(leftFileName, rightFileName, leftLineNumber, rightLineNumber, refs);
            return(MatchResult.Success);
        }