[TEXT-115] Add a StrBuilder replacement based on the StringMatcher interface: TextStringBuilder.
Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/978e2896 Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/978e2896 Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/978e2896 Branch: refs/heads/master Commit: 978e2896dbaeeb24eaed566972a09b0653b39f2b Parents: 0bf361a Author: Gary Gregory <garydgreg...@gmail.com> Authored: Mon Feb 12 11:13:48 2018 -0700 Committer: Gary Gregory <garydgreg...@gmail.com> Committed: Mon Feb 12 11:13:48 2018 -0700 ---------------------------------------------------------------------- checkstyle-suppressions.xml | 6 +- src/changes/changes.xml | 3 +- .../org/apache/commons/text/StrBuilder.java | 2 + .../apache/commons/text/StringSubstitutor.java | 43 +- .../apache/commons/text/TextStringBuilder.java | 3216 ++++++++++++++++++ .../commons/text/StringSubstitutorTest.java | 93 +- .../text/TextStringBuilderAppendInsertTest.java | 1607 +++++++++ .../commons/text/TextStringBuilderTest.java | 2147 ++++++++++++ .../LevenshteinDetailedDistanceTest.java | 4 +- 9 files changed, 7042 insertions(+), 79 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-text/blob/978e2896/checkstyle-suppressions.xml ---------------------------------------------------------------------- diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml index be52c13..d93989a 100644 --- a/checkstyle-suppressions.xml +++ b/checkstyle-suppressions.xml @@ -30,8 +30,8 @@ <suppress checks="MagicNumber" files="JaccardDistance.java" lines="0-99999" /> <suppress checks="MagicNumber" files="JaccardSimilarity.java" lines="0-99999" /> <suppress checks="MagicNumber" files="JaroWinklerDistance.java" lines="0-99999" /> - <suppress checks="FileLength" files="StrBuilder.java" lines="0-99999" /> <suppress checks="MagicNumber" files="StrBuilder.java" lines="0-99999" /> + <suppress checks="MagicNumber" files="TextStringBuilder.java" lines="0-99999" /> <suppress checks="MagicNumber" files="StringEscapeUtils.java" lines="0-99999" /> <suppress checks="MagicNumber" files="StrMatcher.java" lines="0-99999" /> <suppress checks="MagicNumber" files="NumericEntityEscaper.java" lines="0-99999" /> @@ -44,7 +44,11 @@ <suppress checks="MethodName" files=".*[/\\]test[/\\].*" /> <suppress checks="Javadoc" files=".*[/\\]test[/\\].*" /> <suppress checks="FileLength" files="StrBuilderTest.java" /> + <suppress checks="FileLength" files="StrBuilder.java" lines="0-99999" /> + <suppress checks="FileLength" files="TextStringBuilderTest.java" /> + <suppress checks="FileLength" files="TextStringBuilder.java" lines="0-99999" /> <suppress checks="MethodLength" files="LevenshteinDetailedDistanceTest.java" /> <suppress checks="MethodLength" files="StrBuilderAppendInsertTest.java" /> + <suppress checks="MethodLength" files="TextStringBuilderAppendInsertTest.java" /> <suppress checks="TodoComment" files="StringEscapeUtilsTest.java" /> </suppressions> http://git-wip-us.apache.org/repos/asf/commons-text/blob/978e2896/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 778d77a..59a17cd 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -49,7 +49,8 @@ The <action> type attribute can be add,update,fix,remove. <action issue="TEXT-110" type="add" dev="pschumacher">Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility</action> <action issue="TEXT-70" type="fix" dev="pschumacher">Build failure with java 9-ea+159</action> <action issue="TEXT-113" type="add" dev="ggregory">Add an interpolator string lookup</action> - <action issue="TEXT-114" type="add" dev="ggregory">Add a replacement for StrSubstitutor based on interfaces: StringSubstitutor</action> + <action issue="TEXT-114" type="add" dev="ggregory">Add a StrSubstitutor replacement based on interfaces: StringSubstitutor</action> + <action issue="TEXT-115" type="add" dev="ggregory">Add a StrBuilder replacement based on the StringMatcher interface: TextStringBuilder</action> </release> <release version="1.2" date="2017-12-12" description="Release 1.2"> http://git-wip-us.apache.org/repos/asf/commons-text/blob/978e2896/src/main/java/org/apache/commons/text/StrBuilder.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java b/src/main/java/org/apache/commons/text/StrBuilder.java index 79d57c8..8fde14e 100644 --- a/src/main/java/org/apache/commons/text/StrBuilder.java +++ b/src/main/java/org/apache/commons/text/StrBuilder.java @@ -65,7 +65,9 @@ import java.util.Objects; * </p> * * @since 1.0 + * @deprecated Use {@link TextStringBuilder}. This class will be removed in 2.0. */ +@Deprecated public class StrBuilder implements CharSequence, Appendable, Serializable, Builder<String> { /** http://git-wip-us.apache.org/repos/asf/commons-text/blob/978e2896/src/main/java/org/apache/commons/text/StringSubstitutor.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/text/StringSubstitutor.java b/src/main/java/org/apache/commons/text/StringSubstitutor.java index 583cd37..30180f0 100644 --- a/src/main/java/org/apache/commons/text/StringSubstitutor.java +++ b/src/main/java/org/apache/commons/text/StringSubstitutor.java @@ -466,7 +466,7 @@ public class StringSubstitutor { if (!priorVariables.contains(varName)) { return; } - final StrBuilder buf = new StrBuilder(256); + final TextStringBuilder buf = new TextStringBuilder(256); buf.append("Infinite loop in property interpolation of "); buf.append(priorVariables.remove(0)); buf.append(": "); @@ -599,7 +599,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(source.length).append(source); + final TextStringBuilder buf = new TextStringBuilder(source.length).append(source); substitute(buf, 0, source.length); return buf.toString(); } @@ -623,7 +623,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); substitute(buf, 0, length); return buf.toString(); } @@ -662,7 +662,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); substitute(buf, 0, length); return buf.toString(); } @@ -680,7 +680,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder().append(source); + final TextStringBuilder buf = new TextStringBuilder().append(source); substitute(buf, 0, buf.length()); return buf.toString(); } @@ -694,11 +694,11 @@ public class StringSubstitutor { * the builder to use as a template, not changed, null returns null * @return the result of the replace operation */ - public String replace(final StrBuilder source) { + public String replace(final TextStringBuilder source) { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(source.length()).append(source); + final TextStringBuilder buf = new TextStringBuilder(source.length()).append(source); substitute(buf, 0, buf.length()); return buf.toString(); } @@ -718,11 +718,11 @@ public class StringSubstitutor { * the length within the array to be processed, must be valid * @return the result of the replace operation */ - public String replace(final StrBuilder source, final int offset, final int length) { + public String replace(final TextStringBuilder source, final int offset, final int length) { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); substitute(buf, 0, length); return buf.toString(); } @@ -740,7 +740,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(source); + final TextStringBuilder buf = new TextStringBuilder(source); if (!substitute(buf, 0, source.length())) { return source; } @@ -766,7 +766,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); if (!substitute(buf, 0, length)) { return source.substring(offset, offset + length); } @@ -786,7 +786,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(source.length()).append(source); + final TextStringBuilder buf = new TextStringBuilder(source.length()).append(source); substitute(buf, 0, buf.length()); return buf.toString(); } @@ -810,7 +810,7 @@ public class StringSubstitutor { if (source == null) { return null; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); substitute(buf, 0, length); return buf.toString(); } @@ -824,7 +824,7 @@ public class StringSubstitutor { * the builder to replace in, updated, null returns zero * @return true if altered */ - public boolean replaceIn(final StrBuilder source) { + public boolean replaceIn(final TextStringBuilder source) { if (source == null) { return false; } @@ -846,7 +846,7 @@ public class StringSubstitutor { * the length within the builder to be processed, must be valid * @return true if altered */ - public boolean replaceIn(final StrBuilder source, final int offset, final int length) { + public boolean replaceIn(final TextStringBuilder source, final int offset, final int length) { if (source == null) { return false; } @@ -888,7 +888,7 @@ public class StringSubstitutor { if (source == null) { return false; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); if (!substitute(buf, 0, length)) { return false; } @@ -931,7 +931,7 @@ public class StringSubstitutor { if (source == null) { return false; } - final StrBuilder buf = new StrBuilder(length).append(source, offset, length); + final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length); if (!substitute(buf, 0, length)) { return false; } @@ -959,7 +959,7 @@ public class StringSubstitutor { * the end position of the variable including the suffix, valid * @return the variable's value or <b>null</b> if the variable is unknown */ - protected String resolveVariable(final String variableName, final StrBuilder buf, final int startPos, + protected String resolveVariable(final String variableName, final TextStringBuilder buf, final int startPos, final int endPos) { final StringLookup resolver = getStringLookup(); if (resolver == null) { @@ -1204,7 +1204,7 @@ public class StringSubstitutor { * the length within the builder to be processed, must be valid * @return true if altered */ - protected boolean substitute(final StrBuilder buf, final int offset, final int length) { + protected boolean substitute(final TextStringBuilder buf, final int offset, final int length) { return substitute(buf, offset, length, null) > 0; } @@ -1223,7 +1223,8 @@ public class StringSubstitutor { * @return the length change that occurs, unless priorVariables is null when the int represents a boolean flag as to * whether any change occurred. */ - private int substitute(final StrBuilder buf, final int offset, final int length, List<String> priorVariables) { + private int substitute(final TextStringBuilder buf, final int offset, final int length, + List<String> priorVariables) { final StringMatcher pfxMatcher = getVariablePrefixMatcher(); final StringMatcher suffMatcher = getVariableSuffixMatcher(); final char escape = getEscapeChar(); @@ -1278,7 +1279,7 @@ public class StringSubstitutor { String varNameExpr = new String(chars, startPos + startMatchLen, pos - startPos - startMatchLen); if (substitutionInVariablesEnabled) { - final StrBuilder bufName = new StrBuilder(varNameExpr); + final TextStringBuilder bufName = new TextStringBuilder(varNameExpr); substitute(bufName, 0, bufName.length()); varNameExpr = bufName.toString(); }