protected void FireLineAnalyzedEvent(DiffLineNum diffline) { var handler = OnLineNumAnalyzed; if (handler != null) { handler(diffline); } }
private void DoAnalyze(string diffContent) { var lineNumInDiff = 0; var leftLineNum = DiffLineNum.NotApplicableLineNum; var rightLineNum = DiffLineNum.NotApplicableLineNum; foreach (var line in diffContent.Split('\n')) { lineNumInDiff++; if (line.StartsWith("@")) { var meta = new DiffLineNum { LineNumInDiff = lineNumInDiff, LeftLineNum = DiffLineNum.NotApplicableLineNum, RightLineNum = DiffLineNum.NotApplicableLineNum }; var regex = new Regex( @"\-(?<leftStart>\d{1,})\,{0,}(?<leftCount>\d{0,})\s\+(?<rightStart>\d{1,})\,{0,}(?<rightCount>\d{0,})", RegexOptions.Compiled | RegexOptions.IgnoreCase); var lineNumbers = regex.Match(line); leftLineNum = int.Parse(lineNumbers.Groups["leftStart"].Value); rightLineNum = int.Parse(lineNumbers.Groups["rightStart"].Value); FireLineAnalyzedEvent(meta); } else if (line.StartsWith("-")) { var meta = new DiffLineNum { LineNumInDiff = lineNumInDiff, LeftLineNum = leftLineNum, RightLineNum = DiffLineNum.NotApplicableLineNum }; FireLineAnalyzedEvent(meta); leftLineNum++; } else if (line.StartsWith("+")) { var meta = new DiffLineNum { LineNumInDiff = lineNumInDiff, LeftLineNum = DiffLineNum.NotApplicableLineNum, RightLineNum = rightLineNum }; FireLineAnalyzedEvent(meta); rightLineNum++; } else { var meta = new DiffLineNum { LineNumInDiff = lineNumInDiff, LeftLineNum = leftLineNum, RightLineNum = rightLineNum }; FireLineAnalyzedEvent(meta); leftLineNum++; rightLineNum++; } } }