This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push:
new 01f9e9c7 StringSubstitutorReader now substitute variables whose
configured suffix is longer than two characters (#764)
01f9e9c7 is described below
commit 01f9e9c7402d3af01ef815c0e19932cb19c29228
Author: Maksym Korshun <[email protected]>
AuthorDate: Tue Aug 4 20:08:46 2026 +0200
StringSubstitutorReader now substitute variables whose configured suffix is
longer than two characters (#764)
---
.../apache/commons/text/io/StringSubstitutorReader.java | 2 +-
.../text/io/StringSubstitutorFilterReaderTest.java | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/src/main/java/org/apache/commons/text/io/StringSubstitutorReader.java
b/src/main/java/org/apache/commons/text/io/StringSubstitutorReader.java
index 3b237c98..1ba5add1 100644
--- a/src/main/java/org/apache/commons/text/io/StringSubstitutorReader.java
+++ b/src/main/java/org/apache/commons/text/io/StringSubstitutorReader.java
@@ -273,7 +273,7 @@ public class StringSubstitutorReader extends FilterReader {
while (true) {
if (isBufferMatchAt(suffixMatcher, pos)) {
balance--;
- pos++;
+ pos += suffixMatcher.size();
if (balance == 0) {
break;
}
diff --git
a/src/test/java/org/apache/commons/text/io/StringSubstitutorFilterReaderTest.java
b/src/test/java/org/apache/commons/text/io/StringSubstitutorFilterReaderTest.java
index 287d4234..39f5623e 100644
---
a/src/test/java/org/apache/commons/text/io/StringSubstitutorFilterReaderTest.java
+++
b/src/test/java/org/apache/commons/text/io/StringSubstitutorFilterReaderTest.java
@@ -240,6 +240,22 @@ class StringSubstitutorFilterReaderTest extends
StringSubstitutorTest {
}
}
+ @Test
+ void testReadSubstituteVariablesWithSuffixLongerThanTwoCharacters() throws
IOException {
+ final StringSubstitutor substitutor = new StringSubstitutor(values);
+ final String template = "[[aaa]]>";
+ substitutor.setVariablePrefix("[[");
+ substitutor.setVariableSuffix("]]>");
+
+ try (Reader reader = createReader(substitutor, template)) {
+ final int endIndex = template.length() - 1;
+ final char[] cbuf = new char[endIndex];
+ final int readCount = reader.read(cbuf);
+ final String result = new String(cbuf, 0, readCount);
+ assertEquals("111", result);
+ }
+ }
+
private Reader toReader(final String expectedResult) {
return expectedResult != null ? new StringReader(expectedResult) : new
NullReader();
}