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();
     }

Reply via email to