◐ Shell
clean mode source ↗

Fix: Ensure equalities processed via new processEqualities hook (Fixes #219) by tusharsoni52 · Pull Request #224 · java-diff-utils/java-diff-utils

Expand Up @@ -189,6 +189,8 @@ static void wrapInTag( private final Function<String, String> lineNormalizer; private final Function<String, String> processDiffs; private final Function<InlineDeltaMergeInfo, List<AbstractDelta<String>>> inlineDeltaMerger; // processor for equal (unchanged) lines private final Function<String, String> equalityProcessor;
private final boolean showInlineDiffs; private final boolean replaceOriginalLinefeedInChangesWithSpaces; Expand All @@ -214,6 +216,7 @@ private DiffRowGenerator(Builder builder) { lineNormalizer = builder.lineNormalizer; processDiffs = builder.processDiffs; inlineDeltaMerger = builder.inlineDeltaMerger; equalityProcessor = builder.equalityProcessor;
replaceOriginalLinefeedInChangesWithSpaces = builder.replaceOriginalLinefeedInChangesWithSpaces;
Expand Down Expand Up @@ -262,7 +265,8 @@ public List<DiffRow> generateDiffRows(final List<String> original, Patch<String>
// Copy the final matching chunk if any. for (String line : original.subList(endPos, original.size())) { diffRows.add(buildDiffRow(Tag.EQUAL, line, line)); String processed = processEqualities(line); diffRows.add(buildDiffRow(Tag.EQUAL, processed, processed)); } return diffRows; } Expand All @@ -276,7 +280,8 @@ private int transformDeltaIntoDiffRow( Chunk<String> rev = delta.getTarget();
for (String line : original.subList(endPos, orig.getPosition())) { diffRows.add(buildDiffRow(Tag.EQUAL, line, line)); String processed = processEqualities(line); diffRows.add(buildDiffRow(Tag.EQUAL, processed, processed)); }
switch (delta.getType()) { Expand Down Expand Up @@ -496,6 +501,19 @@ private String preprocessLine(String line) { } }
/** * Hook for processing equal (unchanged) text segments. * Delegates to the builder-configured equalityProcessor if present. * * @author tusharsoni52 * @param text * @return * */ protected String processEqualities(final String text) { return equalityProcessor != null ? equalityProcessor.apply(text) : text; }
/** * This class used for building the DiffRowGenerator. * Expand All @@ -521,6 +539,8 @@ public static class Builder { private boolean replaceOriginalLinefeedInChangesWithSpaces = false; private Function<InlineDeltaMergeInfo, List<AbstractDelta<String>>> inlineDeltaMerger = DEFAULT_INLINE_DELTA_MERGER; // Processor for equalities private Function<String, String> equalityProcessor = null;
private Builder() {}
Expand Down Expand Up @@ -613,6 +633,20 @@ public Builder processDiffs(Function<String, String> processDiffs) { return this; }
/** * Processor for equal (unchanged) text parts. * Allows applying the same escaping/transformation as for diffs. * * @author tusharsoni52 * @param equalityProcessor * @return * */ public Builder processEqualities(Function<String, String> equalityProcessor) { this.equalityProcessor = equalityProcessor; return this; }
/** * Set the column width of generated lines of original and revised * texts. Expand Down