public static IEnumerable <DiffHunk> GetDiff(this IReadonlyTextDocument document, IReadonlyTextDocument changedDocument, bool includeEol = true) { if (document == null) { throw new ArgumentNullException("document"); } if (changedDocument == null) { throw new ArgumentNullException("changedDocument"); } var codeDictionary = new Dictionary <string, int> (); int codeCounter = 0; var options = new DiffOptions(includeEol); return(Diff.GetDiff <int> (GetDiffCodes(document, ref codeCounter, codeDictionary, options), GetDiffCodes(changedDocument, ref codeCounter, codeDictionary, options))); }
public static IEnumerable<DiffHunk> GetDiff (this IReadonlyTextDocument document, IReadonlyTextDocument changedDocument, DiffOptions options) { if (document == null) throw new ArgumentNullException ("document"); if (changedDocument == null) throw new ArgumentNullException ("changedDocument"); var codeDictionary = new Dictionary<string, int> (); int codeCounter = 0; return Diff.GetDiff<int> (GetDiffCodes (document, ref codeCounter, codeDictionary, options), GetDiffCodes (changedDocument, ref codeCounter, codeDictionary, options)); }
static int [] GetDiffCodes (IReadonlyTextDocument document, ref int codeCounter, Dictionary<string, int> codeDictionary, DiffOptions options) { int i = 0; var result = new int [document.LineCount]; foreach (var line in document.GetLinesStartingAt (1)) { string lineText = document.GetTextAt (line.Offset, options.IncludeEol ? line.LengthIncludingDelimiter : line.Length); if (options.TrimLines) lineText = lineText.Trim (); int curCode; if (!codeDictionary.TryGetValue (lineText, out curCode)) { codeDictionary [lineText] = curCode = ++codeCounter; } result [i] = curCode; i++; } return result; }
static int [] GetDiffCodes(IReadonlyTextDocument document, ref int codeCounter, Dictionary <string, int> codeDictionary, DiffOptions options) { int i = 0; var result = new int [document.LineCount]; foreach (var line in document.GetLinesStartingAt(1)) { string lineText = document.GetTextAt(line.Offset, options.IncludeEol ? line.LengthIncludingDelimiter : line.Length); if (options.TrimLines) { lineText = lineText.Trim(); } int curCode; if (!codeDictionary.TryGetValue(lineText, out curCode)) { codeDictionary [lineText] = curCode = ++codeCounter; } result [i] = curCode; i++; } return(result); }