Package com.github.difflib.text
Class DiffRowGenerator.Builder
- java.lang.Object
-
- com.github.difflib.text.DiffRowGenerator.Builder
-
- Enclosing class:
- DiffRowGenerator
public static class DiffRowGenerator.Builder extends java.lang.Object
This class used for building the DiffRowGenerator.
-
-
Field Summary
Fields Modifier and Type Field Description private int
columnWidth
private boolean
decompressDeltas
private java.util.function.BiPredicate<java.lang.String,java.lang.String>
equalizer
private boolean
ignoreWhiteSpaces
private java.util.function.Function<java.lang.String,java.util.List<java.lang.String>>
inlineDiffSplitter
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
-
Constructor Summary
Constructors Modifier Constructor Description private
Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DiffRowGenerator
build()
Build the DiffRowGenerator.DiffRowGenerator.Builder
columnWidth(int width)
Set the column width of generated lines of original and revised texts.DiffRowGenerator.Builder
decompressDeltas(boolean decompressDeltas)
Deltas could be in a state, that would produce some unreasonable results within an inline diff.DiffRowGenerator.Builder
equalizer(java.util.function.BiPredicate<java.lang.String,java.lang.String> equalizer)
Provide an equalizer for diff processing.DiffRowGenerator.Builder
ignoreWhiteSpaces(boolean val)
Ignore white spaces in generating diff rows or not.DiffRowGenerator.Builder
inlineDiffBySplitter(java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> inlineDiffSplitter)
To provide some customized splitting a splitter can be provided.DiffRowGenerator.Builder
inlineDiffByWord(boolean inlineDiffByWord)
Per default each character is separatly processed.DiffRowGenerator.Builder
lineNormalizer(java.util.function.Function<java.lang.String,java.lang.String> lineNormalizer)
By default DiffRowGenerator preprocesses lines for HTML output.DiffRowGenerator.Builder
mergeOriginalRevised(boolean mergeOriginalRevised)
Merge the complete result within the original text.DiffRowGenerator.Builder
newTag(java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> generator)
Generator for New-Text-Tags.DiffRowGenerator.Builder
newTag(java.util.function.Function<java.lang.Boolean,java.lang.String> generator)
Generator for New-Text-Tags.DiffRowGenerator.Builder
oldTag(java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> generator)
Generator for Old-Text-Tags.DiffRowGenerator.Builder
oldTag(java.util.function.Function<java.lang.Boolean,java.lang.String> generator)
Generator for Old-Text-Tags.DiffRowGenerator.Builder
processDiffs(java.util.function.Function<java.lang.String,java.lang.String> processDiffs)
Processor for diffed text parts.DiffRowGenerator.Builder
replaceOriginalLinefeedInChangesWithSpaces(boolean replace)
Sometimes it happens that a change contains multiple lines.DiffRowGenerator.Builder
reportLinesUnchanged(boolean val)
Give the originial old and new text lines to Diffrow without any additional processing and without any tags to highlight the change.DiffRowGenerator.Builder
showInlineDiffs(boolean val)
Show inline diffs in generating diff rows or not.
-
-
-
Field Detail
-
showInlineDiffs
private boolean showInlineDiffs
-
ignoreWhiteSpaces
private boolean ignoreWhiteSpaces
-
decompressDeltas
private boolean decompressDeltas
-
oldTag
private java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> oldTag
-
newTag
private java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> newTag
-
columnWidth
private int columnWidth
-
mergeOriginalRevised
private boolean mergeOriginalRevised
-
reportLinesUnchanged
private boolean reportLinesUnchanged
-
inlineDiffSplitter
private java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> inlineDiffSplitter
-
lineNormalizer
private java.util.function.Function<java.lang.String,java.lang.String> lineNormalizer
-
processDiffs
private java.util.function.Function<java.lang.String,java.lang.String> processDiffs
-
equalizer
private java.util.function.BiPredicate<java.lang.String,java.lang.String> equalizer
-
replaceOriginalLinefeedInChangesWithSpaces
private boolean replaceOriginalLinefeedInChangesWithSpaces
-
-
Method Detail
-
showInlineDiffs
public DiffRowGenerator.Builder showInlineDiffs(boolean val)
Show inline diffs in generating diff rows or not.- Parameters:
val
- the value to set. Default: false.- Returns:
- builder with configured showInlineDiff parameter
-
ignoreWhiteSpaces
public DiffRowGenerator.Builder ignoreWhiteSpaces(boolean val)
Ignore white spaces in generating diff rows or not.- Parameters:
val
- the value to set. Default: true.- Returns:
- builder with configured ignoreWhiteSpaces parameter
-
reportLinesUnchanged
public DiffRowGenerator.Builder reportLinesUnchanged(boolean val)
Give the originial old and new text lines to Diffrow without any additional processing and without any tags to highlight the change.- Parameters:
val
- the value to set. Default: false.- Returns:
- builder with configured reportLinesUnWrapped parameter
-
oldTag
public DiffRowGenerator.Builder oldTag(java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> generator)
Generator for Old-Text-Tags.- Parameters:
generator
- the tag generator- Returns:
- builder with configured ignoreBlankLines parameter
-
oldTag
public DiffRowGenerator.Builder oldTag(java.util.function.Function<java.lang.Boolean,java.lang.String> generator)
Generator for Old-Text-Tags.- Parameters:
generator
- the tag generator- Returns:
- builder with configured ignoreBlankLines parameter
-
newTag
public DiffRowGenerator.Builder newTag(java.util.function.BiFunction<DiffRow.Tag,java.lang.Boolean,java.lang.String> generator)
Generator for New-Text-Tags.- Parameters:
generator
-- Returns:
-
newTag
public DiffRowGenerator.Builder newTag(java.util.function.Function<java.lang.Boolean,java.lang.String> generator)
Generator for New-Text-Tags.- Parameters:
generator
-- Returns:
-
processDiffs
public DiffRowGenerator.Builder processDiffs(java.util.function.Function<java.lang.String,java.lang.String> processDiffs)
Processor for diffed text parts. Here e.g. whitecharacters could be replaced by something visible.- Parameters:
processDiffs
-- Returns:
-
columnWidth
public DiffRowGenerator.Builder columnWidth(int width)
Set the column width of generated lines of original and revised texts.- Parameters:
width
- the width to set. Making it < 0 doesn't make any sense. Default 80.- Returns:
- builder with config of column width
-
build
public DiffRowGenerator build()
Build the DiffRowGenerator. If some parameters is not set, the default values are used.- Returns:
- the customized DiffRowGenerator
-
mergeOriginalRevised
public DiffRowGenerator.Builder mergeOriginalRevised(boolean mergeOriginalRevised)
Merge the complete result within the original text. This makes sense for one line display.- Parameters:
mergeOriginalRevised
-- Returns:
-
decompressDeltas
public DiffRowGenerator.Builder decompressDeltas(boolean decompressDeltas)
Deltas could be in a state, that would produce some unreasonable results within an inline diff. So the deltas are decompressed into smaller parts and rebuild. But this could result in more differences.- Parameters:
decompressDeltas
-- Returns:
-
inlineDiffByWord
public DiffRowGenerator.Builder inlineDiffByWord(boolean inlineDiffByWord)
Per default each character is separatly processed. This variant introduces processing by word, which does not deliver in word changes. Therefore the whole word will be tagged as changed:false: (aBa : aba) -- changed: a(B)a : a(b)a true: (aBa : aba) -- changed: (aBa) : (aba)
-
inlineDiffBySplitter
public DiffRowGenerator.Builder inlineDiffBySplitter(java.util.function.Function<java.lang.String,java.util.List<java.lang.String>> inlineDiffSplitter)
To provide some customized splitting a splitter can be provided. Here someone could think about sentence splitter, comma splitter or stuff like that.- Parameters:
inlineDiffSplitter
-- Returns:
-
lineNormalizer
public DiffRowGenerator.Builder lineNormalizer(java.util.function.Function<java.lang.String,java.lang.String> lineNormalizer)
By default DiffRowGenerator preprocesses lines for HTML output. Tabs and special HTML characters like "<" are replaced with its encoded value. To change this you can provide a customized line normalizer here.- Parameters:
lineNormalizer
-- Returns:
-
equalizer
public DiffRowGenerator.Builder equalizer(java.util.function.BiPredicate<java.lang.String,java.lang.String> equalizer)
Provide an equalizer for diff processing.- Parameters:
equalizer
- equalizer for diff processing.- Returns:
- builder with configured equalizer parameter
-
replaceOriginalLinefeedInChangesWithSpaces
public DiffRowGenerator.Builder replaceOriginalLinefeedInChangesWithSpaces(boolean replace)
Sometimes it happens that a change contains multiple lines. If there is no correspondence in old and new. To keep the merged line more readable the linefeeds could be replaced by spaces.- Parameters:
replace
-- Returns:
-
-