Skip to content
This repository was archived by the owner on Jun 24, 2018. It is now read-only.

Commit 8a0afb9

Browse files
Modified builder of DiffRowGenerator to accept custom Equalizer<String> instances to compare lines during diffs
1 parent 27c1165 commit 8a0afb9

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

src/main/java/difflib/DiffRowGenerator.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,15 @@ public static class Builder {
7474
private int columnWidth = 80;
7575
@Nullable
7676
private String defaultString = "";
77+
private Equalizer<String> stringEqualizer = new Equalizer<String>() {
78+
public boolean equals(String original, String revised) {
79+
if (ignoreWhiteSpaces) {
80+
original = original.trim().replaceAll("\\s+", " ");
81+
revised = revised.trim().replaceAll("\\s+", " ");
82+
}
83+
return original.equals(revised);
84+
}
85+
};;
7786

7887
/**
7988
* Show inline diffs in generating diff rows or not.
@@ -154,7 +163,18 @@ public Builder defaultString(@Nullable String defaultString) {
154163
}
155164

156165
/**
157-
* Build the DiffRowGenerator. If some parameters is not set, the default values are used.
166+
* Set the custom equalizer to use while comparing the lines of the revisions.
167+
* @param stringEqualizer to use (custom one)
168+
* @return builder with configured stringEqualizer
169+
*/
170+
public Builder stringEqualizer(Equalizer<String> stringEqualizer) {
171+
this.stringEqualizer = stringEqualizer;
172+
return this;
173+
}
174+
175+
/**
176+
* Build the DiffRowGenerator using the default Equalizer for rows.
177+
* If some parameters are not set, the default values are used.
158178
* @return the customized DiffRowGenerator
159179
*/
160180
public DiffRowGenerator build() {
@@ -171,19 +191,7 @@ private DiffRowGenerator(Builder builder) {
171191
InlineNewCssClass = builder.InlineNewCssClass;
172192
columnWidth = builder.columnWidth; //
173193
defaultString = builder.defaultString;
174-
equalizer = new Equalizer<String>() {
175-
public boolean equals(@Nullable String original, @Nullable String revised) {
176-
if (ignoreWhiteSpaces) {
177-
if (original != null) {
178-
original = original.trim().replaceAll("\\s+", " ");
179-
}
180-
if (revised != null) {
181-
revised = revised.trim().replaceAll("\\s+", " ");
182-
}
183-
}
184-
return Objects.equals(original, revised);
185-
}
186-
};
194+
equalizer = builder.stringEqualizer;
187195
}
188196

189197
/**

0 commit comments

Comments
 (0)