Add cleanupSemanticsLossless for even betten diff output

This can format the output in a more human friendly format:
EQ("Th") INS("at c") EQ("at cartoon") -> EQ("That ") INS("cat ") EQ("cartoon")

Change-Id: Iab545c0c0bccffa379f346e482b17b574e05e88a
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
jkobus
2013-03-14 12:53:16 +01:00
committed by Jarek Kobus
parent fff7c62b8a
commit 7d41817ec3
3 changed files with 358 additions and 156 deletions

View File

@@ -71,8 +71,9 @@ public:
QList<Diff> diff(const QString &text1, const QString &text2);
void setDiffMode(DiffMode mode);
bool diffMode() const;
QList<Diff> merge(const QList<Diff> &diffList);
QList<Diff> cleanupSemantics(const QList<Diff> &diffList);
static QList<Diff> merge(const QList<Diff> &diffList);
static QList<Diff> cleanupSemantics(const QList<Diff> &diffList);
static QList<Diff> cleanupSemanticsLossless(const QList<Diff> &diffList);
private:
QList<Diff> preprocess1AndDiff(const QString &text1, const QString &text2);
@@ -80,7 +81,6 @@ private:
QList<Diff> diffMyers(const QString &text1, const QString &text2);
QList<Diff> diffMyersSplit(const QString &text1, int x,
const QString &text2, int y);
QList<Diff> squashEqualities(const QList<Diff> &diffList);
QList<Diff> diffNonCharMode(const QString text1, const QString text2);
QStringList encode(const QString &text1,
const QString &text2,
@@ -89,14 +89,8 @@ private:
QString encode(const QString &text,
QStringList *lines,
QMap<QString, int> *lineToCode);
QList<Diff> decode(const QList<Diff> &diffList,
const QStringList &lines);
int findSubtextEnd(const QString &text,
int subTextStart);
int commonPrefix(const QString &text1, const QString &text2) const;
int commonSuffix(const QString &text1, const QString &text2) const;
int commonOverlap(const QString &text1, const QString &text2) const;
QList<Diff> cleanupOverlaps(const QList<Diff> &diffList);
DiffMode m_diffMode;
DiffMode m_currentDiffMode;
};