Package com.github.difflib.text
Class DiffRowGenerator
- java.lang.Object
-
- com.github.difflib.text.DiffRowGenerator
-
public final class DiffRowGenerator extends java.lang.Object
This class for generating DiffRows for side-by-sidy view. You can customize the way of generating. For example, show inline diffs on not, ignoring white spaces or/and blank lines and so on. All parameters for generating are optional. If you do not specify them, the class will use the default values. These values are: showInlineDiffs = false; ignoreWhiteSpaces = true; ignoreBlankLines = true; ... For instantiating the DiffRowGenerator you should use the its builder. Like in exampleDiffRowGenerator generator = new DiffRowGenerator.Builder().showInlineDiffs(true). ignoreWhiteSpaces(true).columnWidth(100).build();
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DiffRowGenerator.Builder
This class used for building the DiffRowGenerator.
-
Field Summary
Fields Modifier and Type Field Description private int
columnWidth
private boolean
decompressDeltas
static java.util.function.BiPredicate<java.lang.String,java.lang.String>
DEFAULT_EQUALIZER
private java.util.function.BiPredicate<java.lang.String,java.lang.String>
equalizer
static java.util.function.BiPredicate<java.lang.String,java.lang.String>
IGNORE_WHITESPACE_EQUALIZER
private boolean
ignoreWhiteSpaces
private java.util.function.Function<java.lang.String,java.util.List<java.lang.String>>
inlineDiffSplitter
static java.util.function.Function<java.lang.String,java.lang.String>
LINE_NORMALIZER_FOR_HTML
private java.util.function.Function<java.lang.String,java.lang.String>
lineNormalizer
private boolean
mergeOriginalRevised
private java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String>
newTag
private java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String>
oldTag
private java.util.function.Function<java.lang.String,java.lang.String>
processDiffs
private boolean
replaceOriginalLinefeedInChangesWithSpaces
private boolean
reportLinesUnchanged
private boolean
showInlineDiffs
static java.util.regex.Pattern
SPLIT_BY_WORD_PATTERN
static java.util.function.Function<java.lang.String,java.util.List<java.lang.String>>
SPLITTER_BY_CHARACTER
Splitting lines by character to achieve char by char diff checking.static java.util.function.Function<java.lang.String,java.util.List<java.lang.String>>
SPLITTER_BY_WORD
Splitting lines by word to achieve word by word diff checking.static java.util.regex.Pattern
WHITESPACE_PATTERN
-
Constructor Summary
Constructors Modifier Constructor Description private
DiffRowGenerator(DiffRowGenerator.Builder builder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.String
adjustWhitespace(java.lang.String raw)
private DiffRow
buildDiffRow(DiffRow.Tag type, java.lang.String orgline, java.lang.String newline)
private DiffRow
buildDiffRowWithoutNormalizing(DiffRow.Tag type, java.lang.String orgline, java.lang.String newline)
static DiffRowGenerator.Builder
create()
private java.util.List<AbstractDelta<java.lang.String>>
decompressDeltas(AbstractDelta<java.lang.String> delta)
Decompresses ChangeDeltas with different source and target size to a ChangeDelta with same size and a following InsertDelta or DeleteDelta.java.util.List<DiffRow>
generateDiffRows(java.util.List<java.lang.String> original, Patch<java.lang.String> patch)
Generates the DiffRows describing the difference between original and revised texts using the given patch.java.util.List<DiffRow>
generateDiffRows(java.util.List<java.lang.String> original, java.util.List<java.lang.String> revised)
Get the DiffRows describing the difference between original and revised texts using the given patch.private java.util.List<DiffRow>
generateInlineDiffs(AbstractDelta<java.lang.String> delta)
Add the inline diffs for given delta(package private) java.util.List<java.lang.String>
normalizeLines(java.util.List<java.lang.String> list)
private java.lang.String
preprocessLine(java.lang.String line)
protected static java.util.List<java.lang.String>
splitStringPreserveDelimiter(java.lang.String str, java.util.regex.Pattern SPLIT_PATTERN)
private int
transformDeltaIntoDiffRow(java.util.List<java.lang.String> original, int endPos, java.util.List<DiffRow> diffRows, AbstractDelta<java.lang.String> delta)
Transforms one patch delta into a DiffRow object.(package private) static void
wrapInTag(java.util.List<java.lang.String> sequence, int startPosition, int endPosition, DiffRow.Tag tag, java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> tagGenerator, java.util.function.Function<java.lang.String,java.lang.String> processDiffs, boolean replaceLinefeedWithSpace)
Wrap the elements in the sequence with the given tag
-
-
-
Field Detail
-
DEFAULT_EQUALIZER
public static final java.util.function.BiPredicate<java.lang.String,java.lang.String> DEFAULT_EQUALIZER
-
IGNORE_WHITESPACE_EQUALIZER
public static final java.util.function.BiPredicate<java.lang.String,java.lang.String> IGNORE_WHITESPACE_EQUALIZER
-
LINE_NORMALIZER_FOR_HTML
public static final java.util.function.Function<java.lang.String,java.lang.String> LINE_NORMALIZER_FOR_HTML
-
SPLITTER_BY_CHARACTER
public static final java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> SPLITTER_BY_CHARACTER
Splitting lines by character to achieve char by char diff checking.
-
SPLIT_BY_WORD_PATTERN
public static final java.util.regex.Pattern SPLIT_BY_WORD_PATTERN
-
SPLITTER_BY_WORD
public static final java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> SPLITTER_BY_WORD
Splitting lines by word to achieve word by word diff checking.
-
WHITESPACE_PATTERN
public static final java.util.regex.Pattern WHITESPACE_PATTERN
-
columnWidth
private final int columnWidth
-
equalizer
private final java.util.function.BiPredicate<java.lang.String,java.lang.String> equalizer
-
ignoreWhiteSpaces
private final boolean ignoreWhiteSpaces
-
inlineDiffSplitter
private final java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> inlineDiffSplitter
-
mergeOriginalRevised
private final boolean mergeOriginalRevised
-
newTag
private final java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> newTag
-
oldTag
private final java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> oldTag
-
reportLinesUnchanged
private final boolean reportLinesUnchanged
-
lineNormalizer
private final java.util.function.Function<java.lang.String,java.lang.String> lineNormalizer
-
processDiffs
private final java.util.function.Function<java.lang.String,java.lang.String> processDiffs
-
showInlineDiffs
private final boolean showInlineDiffs
-
replaceOriginalLinefeedInChangesWithSpaces
private final boolean replaceOriginalLinefeedInChangesWithSpaces
-
decompressDeltas
private final boolean decompressDeltas
-
-
Constructor Detail
-
DiffRowGenerator
private DiffRowGenerator(DiffRowGenerator.Builder builder)
-
-
Method Detail
-
create
public static DiffRowGenerator.Builder create()
-
adjustWhitespace
private static java.lang.String adjustWhitespace(java.lang.String raw)
-
splitStringPreserveDelimiter
protected static final java.util.List<java.lang.String> splitStringPreserveDelimiter(java.lang.String str, java.util.regex.Pattern SPLIT_PATTERN)
-
wrapInTag
static void wrapInTag(java.util.List<java.lang.String> sequence, int startPosition, int endPosition, DiffRow.Tag tag, java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> tagGenerator, java.util.function.Function<java.lang.String,java.lang.String> processDiffs, boolean replaceLinefeedWithSpace)
Wrap the elements in the sequence with the given tag- Parameters:
startPosition
- the position from which tag should start. The counting start from a zero.endPosition
- the position before which tag should should be closed.tagGenerator
- the tag generator
-
generateDiffRows
public java.util.List<DiffRow> generateDiffRows(java.util.List<java.lang.String> original, java.util.List<java.lang.String> revised)
Get the DiffRows describing the difference between original and revised texts using the given patch. Useful for displaying side-by-side diff.- Parameters:
original
- the original textrevised
- the revised text- Returns:
- the DiffRows between original and revised texts
-
generateDiffRows
public java.util.List<DiffRow> generateDiffRows(java.util.List<java.lang.String> original, Patch<java.lang.String> patch)
Generates the DiffRows describing the difference between original and revised texts using the given patch. Useful for displaying side-by-side diff.- Parameters:
original
- the original textpatch
- the given patch- Returns:
- the DiffRows between original and revised texts
-
transformDeltaIntoDiffRow
private int transformDeltaIntoDiffRow(java.util.List<java.lang.String> original, int endPos, java.util.List<DiffRow> diffRows, AbstractDelta<java.lang.String> delta)
Transforms one patch delta into a DiffRow object.
-
decompressDeltas
private java.util.List<AbstractDelta<java.lang.String>> decompressDeltas(AbstractDelta<java.lang.String> delta)
Decompresses ChangeDeltas with different source and target size to a ChangeDelta with same size and a following InsertDelta or DeleteDelta. With this problems of building DiffRows getting smaller.- Parameters:
deltaList
-
-
buildDiffRow
private DiffRow buildDiffRow(DiffRow.Tag type, java.lang.String orgline, java.lang.String newline)
-
buildDiffRowWithoutNormalizing
private DiffRow buildDiffRowWithoutNormalizing(DiffRow.Tag type, java.lang.String orgline, java.lang.String newline)
-
normalizeLines
java.util.List<java.lang.String> normalizeLines(java.util.List<java.lang.String> list)
-
generateInlineDiffs
private java.util.List<DiffRow> generateInlineDiffs(AbstractDelta<java.lang.String> delta)
Add the inline diffs for given delta- Parameters:
delta
- the given delta
-
preprocessLine
private java.lang.String preprocessLine(java.lang.String line)
-
-