public class DiffMatchPatch extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
DiffMatchPatch.Diff
Class representing one diff operation.
|
static class |
DiffMatchPatch.Operation
-
The data structure representing a diff is a Linked list of Diff objects:
{Diff(Operation.DELETE, "Hello"), Diff(Operation.INSERT, "Goodbye"),
Diff(Operation.EQUAL, " world.")}
which means: delete "Hello", add "Goodbye" and keep " world."
|
static class |
DiffMatchPatch.Patch
Class representing one patch operation.
|
| Modifier and Type | Field and Description |
|---|---|
short |
Diff_DualThreshold |
short |
Diff_EditCost |
float |
Diff_Timeout |
float |
Match_Balance |
int |
Match_MaxLength |
int |
Match_MinLength |
float |
Match_Threshold |
short |
Patch_Margin |
| Constructor and Description |
|---|
DiffMatchPatch() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
diff_charsToLines(LinkedList<DiffMatchPatch.Diff> diffs,
List<String> lineArray)
Rehydrate the text in a diff from a string of line hashes to real lines of
text.
|
void |
diff_cleanupEfficiency(LinkedList<DiffMatchPatch.Diff> diffs)
Reduce the number of edits by eliminating operationally trivial equalities.
|
void |
diff_cleanupMerge(LinkedList<DiffMatchPatch.Diff> diffs)
Reorder and merge like edit sections.
|
void |
diff_cleanupSemantic(LinkedList<DiffMatchPatch.Diff> diffs)
Reduce the number of edits by eliminating semantically trivial equalities.
|
void |
diff_cleanupSemanticLossless(LinkedList<DiffMatchPatch.Diff> diffs)
Look for single edits surrounded on both sides by equalities
which can be shifted sideways to align the edit to a word boundary.
|
int |
diff_commonPrefix(String text1,
String text2)
Determine the common prefix of two strings
|
int |
diff_commonSuffix(String text1,
String text2)
Determine the common suffix of two strings
|
protected LinkedList<DiffMatchPatch.Diff> |
diff_compute(String text1,
String text2,
boolean checklines)
Find the differences between two texts.
|
protected Long |
diff_footprint(int x,
int y)
Compute a good hash of two integers.
|
LinkedList<DiffMatchPatch.Diff> |
diff_fromDelta(String text1,
String delta)
Given the original text1, and an encoded string which describes the
operations required to transform text1 into text2, compute the full diff.
|
protected String[] |
diff_halfMatch(String text1,
String text2)
Do the two texts share a substring which is at least half the length of
the longer text?
|
protected Object[] |
diff_linesToChars(String text1,
String text2)
Split two texts into a list of strings.
|
LinkedList<DiffMatchPatch.Diff> |
diff_main(String text1,
String text2)
Find the differences between two texts.
|
LinkedList<DiffMatchPatch.Diff> |
diff_main(String text1,
String text2,
boolean checklines)
Find the differences between two texts.
|
protected LinkedList<DiffMatchPatch.Diff> |
diff_map(String text1,
String text2)
Explore the intersection points between the two texts.
|
protected LinkedList<DiffMatchPatch.Diff> |
diff_path1(List<Set<Long>> v_map,
String text1,
String text2)
Work from the middle back to the start to determine the path.
|
protected LinkedList<DiffMatchPatch.Diff> |
diff_path2(List<Set<Long>> v_map,
String text1,
String text2)
Work from the middle back to the end to determine the path.
|
String |
diff_prettyHtml(LinkedList<DiffMatchPatch.Diff> diffs)
Convert a Diff list into a pretty HTML report.
|
String |
diff_text1(LinkedList<DiffMatchPatch.Diff> diffs)
Compute and return the source text (all equalities and deletions).
|
String |
diff_text2(LinkedList<DiffMatchPatch.Diff> diffs)
Compute and return the destination text (all equalities and insertions).
|
String |
diff_toDelta(LinkedList<DiffMatchPatch.Diff> diffs)
Crush the diff into an encoded string which describes the operations
required to transform text1 into text2.
|
int |
diff_xIndex(LinkedList<DiffMatchPatch.Diff> diffs,
int loc)
loc is a location in text1, compute and return the equivalent location in
text2.
|
protected Map<Character,Integer> |
match_alphabet(String pattern)
Initialise the alphabet for the Bitap algorithm.
|
protected int |
match_bitap(String text,
String pattern,
int loc)
Locate the best instance of 'pattern' in 'text' near 'loc' using the
Bitap algorithm.
|
int |
match_main(String text,
String pattern,
int loc)
Locate the best instance of 'pattern' in 'text' near 'loc'.
|
protected void |
patch_addContext(DiffMatchPatch.Patch patch,
String text)
Increase the context until it is unique,
but don't let the pattern expand beyond Match_MaxBits.
|
protected String |
patch_addPadding(LinkedList<DiffMatchPatch.Patch> patches)
Add some padding on text start and end so that edges can match something.
|
Object[] |
patch_apply(LinkedList<DiffMatchPatch.Patch> patches,
String text)
Merge a set of patches onto the text.
|
protected LinkedList<DiffMatchPatch.Patch> |
patch_deepCopy(LinkedList<DiffMatchPatch.Patch> patches)
Given an array of patches, return another array that is identical.
|
List<DiffMatchPatch.Patch> |
patch_fromText(String textline)
Parse a textual representation of patches and return a List of Patch
objects.
|
LinkedList<DiffMatchPatch.Patch> |
patch_make(LinkedList<DiffMatchPatch.Diff> diffs)
Compute a list of patches to turn text1 into text2.
|
LinkedList<DiffMatchPatch.Patch> |
patch_make(String text1,
LinkedList<DiffMatchPatch.Diff> diffs)
Compute a list of patches to turn text1 into text2.
|
LinkedList<DiffMatchPatch.Patch> |
patch_make(String text1,
String text2)
Compute a list of patches to turn text1 into text2.
|
void |
patch_splitMax(LinkedList<DiffMatchPatch.Patch> patches)
Look through the patches and break up any which are longer than the
maximum limit of the match algorithm.
|
String |
patch_toText(List<DiffMatchPatch.Patch> patches)
Take a list of patches and return a textual representation.
|
public float Diff_Timeout
public short Diff_EditCost
public short Diff_DualThreshold
public float Match_Balance
public float Match_Threshold
public int Match_MinLength
public int Match_MaxLength
public short Patch_Margin
public LinkedList<DiffMatchPatch.Diff> diff_main(String text1, String text2)
text1 - Old string to be diffed.text2 - New string to be diffed.public LinkedList<DiffMatchPatch.Diff> diff_main(String text1, String text2, boolean checklines)
text1 - Old string to be diffed.text2 - New string to be diffed.checklines - Speedup flag. If false, then don't run a
line-level diff first to identify the changed areas.
If true, then run a faster slightly less optimal diffprotected LinkedList<DiffMatchPatch.Diff> diff_compute(String text1, String text2, boolean checklines)
text1 - Old string to be diffed.text2 - New string to be diffed.checklines - Speedup flag. If false, then don't run a
line-level diff first to identify the changed areas.
If true, then run a faster slightly less optimal diffprotected Object[] diff_linesToChars(String text1, String text2)
text1 - First string.text2 - Second string.protected void diff_charsToLines(LinkedList<DiffMatchPatch.Diff> diffs, List<String> lineArray)
diffs - LinkedList of Diff objects.lineArray - List of unique strings.protected LinkedList<DiffMatchPatch.Diff> diff_map(String text1, String text2)
text1 - Old string to be diffed.text2 - New string to be diffed.protected LinkedList<DiffMatchPatch.Diff> diff_path1(List<Set<Long>> v_map, String text1, String text2)
v_map - List of path sets.text1 - Old string fragment to be diffed.text2 - New string fragment to be diffed.protected LinkedList<DiffMatchPatch.Diff> diff_path2(List<Set<Long>> v_map, String text1, String text2)
v_map - List of path sets.text1 - Old string fragment to be diffed.text2 - New string fragment to be diffed.protected Long diff_footprint(int x, int y)
x - First int.y - Second int.public int diff_commonPrefix(String text1, String text2)
text1 - First string.text2 - Second string.public int diff_commonSuffix(String text1, String text2)
text1 - First string.text2 - Second string.protected String[] diff_halfMatch(String text1, String text2)
text1 - First string.text2 - Second string.public void diff_cleanupSemantic(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public void diff_cleanupSemanticLossless(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public void diff_cleanupEfficiency(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public void diff_cleanupMerge(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public int diff_xIndex(LinkedList<DiffMatchPatch.Diff> diffs, int loc)
diffs - LinkedList of Diff objects.loc - Location within text1.public String diff_prettyHtml(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public String diff_text1(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public String diff_text2(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - LinkedList of Diff objects.public String diff_toDelta(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - Array of diff tuples.public LinkedList<DiffMatchPatch.Diff> diff_fromDelta(String text1, String delta) throws IllegalArgumentException
text1 - Source string for the diff.delta - Delta text.IllegalArgumentExceptionpublic int match_main(String text, String pattern, int loc)
text - The text to search.pattern - The pattern to search for.loc - The location to search around.protected int match_bitap(String text, String pattern, int loc)
text - The text to search.pattern - The pattern to search for.loc - The location to search around.protected Map<Character,Integer> match_alphabet(String pattern)
pattern - The text to encode.protected void patch_addContext(DiffMatchPatch.Patch patch, String text)
patch - The patch to grow.text - Source text.public LinkedList<DiffMatchPatch.Patch> patch_make(String text1, String text2)
text1 - Old text.text2 - New text.public LinkedList<DiffMatchPatch.Patch> patch_make(LinkedList<DiffMatchPatch.Diff> diffs)
diffs - Array of diff tuples for text1 to text2.public LinkedList<DiffMatchPatch.Patch> patch_make(String text1, LinkedList<DiffMatchPatch.Diff> diffs)
text1 - Old text.diffs - Array of diff tuples for text1 to text2.protected LinkedList<DiffMatchPatch.Patch> patch_deepCopy(LinkedList<DiffMatchPatch.Patch> patches)
patches - Array of patch objects.public Object[] patch_apply(LinkedList<DiffMatchPatch.Patch> patches, String text)
patches - Array of patch objectstext - Old text.protected String patch_addPadding(LinkedList<DiffMatchPatch.Patch> patches)
patches - Array of patch objects.public void patch_splitMax(LinkedList<DiffMatchPatch.Patch> patches)
patches - LinkedList of Patch objects.public String patch_toText(List<DiffMatchPatch.Patch> patches)
patches - List of Patch objects.public List<DiffMatchPatch.Patch> patch_fromText(String textline) throws IllegalArgumentException
textline - Text representation of patches.IllegalArgumentException - If invalid input.Copyright © 2004–2020 Jahia Solutions Group SA. All rights reserved.