From 966fe142f2da08f6d3f4ae0c4a2f2dfc8acd3274 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 22 Dec 2010 23:58:15 +0100 Subject: [PATCH] added DocumentSequence - works on a per line basis, not per character --- .../AvalonEdit.AddIn/AvalonEdit.AddIn.csproj | 1 + .../Src/MyersDiff/DocumentSequence.cs | 39 +++++++++++++++++++ .../Src/MyersDiff/StringSequence.cs | 4 +- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/DocumentSequence.cs diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj index d49a014688..073d0f4595 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj @@ -94,6 +94,7 @@ + diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/DocumentSequence.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/DocumentSequence.cs new file mode 100644 index 0000000000..dbc183d4d7 --- /dev/null +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/DocumentSequence.cs @@ -0,0 +1,39 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Collections.Generic; +using ICSharpCode.SharpDevelop.Editor; + +namespace ICSharpCode.AvalonEdit.AddIn.MyersDiff +{ + public class DocumentSequence : ISequence + { + IDocument document; + List hashCodes; + + public DocumentSequence(IDocument document) + { + this.document = document; + this.hashCodes = new List(); + } + + public int Size() + { + return document.TotalNumberOfLines; + } + + public bool Equals(int i, ISequence other, int j) + { + DocumentSequence seq = other as DocumentSequence; + + if (seq == null) + return false; + + IDocumentLine thisLine = document.GetLine(i + 1); + IDocumentLine otherLine = seq.document.GetLine(j + 1); + + return thisLine.Text == otherLine.Text; + } + } +} diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/StringSequence.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/StringSequence.cs index 068d4fe097..f521605f1e 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/StringSequence.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MyersDiff/StringSequence.cs @@ -2,6 +2,8 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Collections.Generic; +using ICSharpCode.SharpDevelop.Editor; namespace ICSharpCode.AvalonEdit.AddIn.MyersDiff { @@ -29,6 +31,4 @@ namespace ICSharpCode.AvalonEdit.AddIn.MyersDiff return content[i] == seq.content[j]; } } - - }