This is an automated email from the ASF dual-hosted git repository.

ggregory 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 de6b2c5  Add org.apache.commons.text.matcher.StringMatcher.size().
de6b2c5 is described below

commit de6b2c5629722dbd767d581ee66048d4f5040e6b
Author: Gary Gregory <[email protected]>
AuthorDate: Mon Jun 22 20:42:50 2020 -0400

    Add org.apache.commons.text.matcher.StringMatcher.size().
---
 pom.xml                                            | 12 ++++-
 src/changes/changes.xml                            |  3 +-
 .../text/matcher/AbstractStringMatcher.java        | 56 +++++++++++++++++++++-
 .../apache/commons/text/matcher/StringMatcher.java | 10 ++++
 .../commons/text/matcher/StringMatcherTest.java    | 15 ++++++
 5 files changed, 91 insertions(+), 5 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2f36083..340a3fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
     <version>51</version>
   </parent>
   <artifactId>commons-text</artifactId>
-  <version>1.8.1-SNAPSHOT</version>
+  <version>1.9-SNAPSHOT</version>
   <name>Apache Commons Text</name>
   <description>Apache Commons Text is a library focused on algorithms working 
on strings.</description>
   <url>https://commons.apache.org/proper/commons-text</url>
@@ -37,7 +37,7 @@
     <commons.componentid>text</commons.componentid>
     <commons.module.name>org.apache.commons.text</commons.module.name>
 
-    <commons.release.version>1.8</commons.release.version>
+    <commons.release.version>1.9</commons.release.version>
     <commons.release.desc>(Java 8+)</commons.release.desc>
 
     <commons.jira.id>TEXT</commons.jira.id>
@@ -90,6 +90,14 @@
       <version>3.16.1</version>
       <scope>test</scope>
     </dependency>
+    <!--
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.7</version>
+      <scope>test</scope>
+    </dependency>
+    -->
   </dependencies>
 
   <build>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3e577bd..2f1582b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -45,11 +45,12 @@ The <action> type attribute can be add,update,fix,remove.
   </properties>
   <body>
 
-  <release version="1.8.1" date="2019-MM-DD" description="Release 1.8.1">
+  <release version="1.9" date="2019-MM-DD" description="Release 1.8.1">
     <action issue="TEXT-166" type="fix" dev="kinow" due-to="Mikko 
Maunu">Removed non-existing parameter from Javadocs and spelled out parameters 
in throws.</action>
     <action issue="TEXT-149" type="fix" dev="kinow" due-to="Yuji 
Konishi">StringEscapeUtils.unescapeCsv doesn't remove quotes at begin and end 
of string.</action>
     <action issue="TEXT-174" type="fix"    dev="ggregory" 
due-to="furkilic">ScriptStringLookup does not accept ":" #126.</action>
     <action                  type="update" dev="ggregory" due-to="Johan 
Hammar">[javadoc] Fix compiler warnings in Java code example in Javadoc 
#124.</action>
+    <action                  type="add" dev="ggregory" due-to="Gary 
Gregory">Add org.apache.commons.text.matcher.StringMatcher.size().</action>
     <action issue="TEXT-177" type="update" dev="ggregory" due-to="Gary 
Gregory">Update from Apache Commons Lang 3.9 to 3.10.</action>
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">[test] junit-jupiter 5.5.1 -> 5.5.2.</action>
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">[test] org.assertj:assertj-core 3.13.2 -> 3.16.1.</action>
diff --git 
a/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java 
b/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java
index e2431c1..c38d723 100644
--- a/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java
+++ b/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java
@@ -65,6 +65,16 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
         public int isMatch(final char[] buffer, final int start, final int 
bufferStart, final int bufferEnd) {
             return ch == buffer[start] ? 1 : 0;
         }
+        
+        /**
+         * Returns 1.
+         *
+         * @since 1.9
+         */
+        @Override
+        public int size() {
+            return 1;
+        }
     }
 
     /**
@@ -104,6 +114,17 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
         public int isMatch(final char[] buffer, final int start, final int 
bufferStart, final int bufferEnd) {
             return Arrays.binarySearch(chars, buffer[start]) >= 0 ? 1 : 0;
         }
+        
+        /**
+         * Returns 1.
+         *
+         * @since 1.9
+         */
+        @Override
+        public int size() {
+            return 1;
+        }
+
     }
 
     /**
@@ -135,6 +156,17 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
         public int isMatch(final char[] buffer, final int start, final int 
bufferStart, final int bufferEnd) {
             return 0;
         }
+        
+        /**
+         * Returns 0.
+         *
+         * @since 1.9
+         */
+        @Override
+        public int size() {
+            return 0;
+        }
+
     }
 
     /**
@@ -171,11 +203,11 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
          */
         @Override
         public int isMatch(final char[] buffer, int start, final int 
bufferStart, final int bufferEnd) {
-            final int len = chars.length;
+            final int len = size();
             if (start + len > bufferEnd) {
                 return 0;
             }
-            for (int i = 0; i < chars.length; i++, start++) {
+            for (int i = 0; i < len; i++, start++) {
                 if (chars[i] != buffer[start]) {
                     return 0;
                 }
@@ -187,6 +219,16 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
         public String toString() {
             return super.toString() + ' ' + Arrays.toString(chars);
         }
+        
+        /**
+         * Returns the size of the string to match given in the constructor.
+         *
+         * @since 1.9
+         */
+        @Override
+        public int size() {
+            return chars.length;
+        }
 
     }
 
@@ -224,6 +266,16 @@ abstract class AbstractStringMatcher implements 
StringMatcher {
         public int isMatch(final char[] buffer, final int start, final int 
bufferStart, final int bufferEnd) {
             return buffer[start] <= SPACE_INT ? 1 : 0;
         }
+        
+        /**
+         * Returns 1.
+         *
+         * @since 1.9
+         */
+        @Override
+        public int size() {
+            return 1;
+        }
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/text/matcher/StringMatcher.java 
b/src/main/java/org/apache/commons/text/matcher/StringMatcher.java
index 1a69e2c..07925fa 100644
--- a/src/main/java/org/apache/commons/text/matcher/StringMatcher.java
+++ b/src/main/java/org/apache/commons/text/matcher/StringMatcher.java
@@ -56,4 +56,14 @@ public interface StringMatcher {
      */
     int isMatch(char[] buffer, int start, int bufferStart, int bufferEnd);
 
+    /**
+     * Returns the size of the matching string. Defaults to 0.
+     *  
+     * @return the size of the matching string.
+     * @since 1.9
+     */
+    default int size() {
+        return 0;
+    }
+
 }
diff --git 
a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java 
b/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java
index a46182a..22bf989 100644
--- a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java
+++ b/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.text.matcher;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,6 +33,7 @@ public class StringMatcherTest {
     @Test
     public void testCharMatcher_char() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.charMatcher('c');
+        assertEquals(1, matcher.size());
         assertThat(matcher.isMatch(BUFFER2, 0, 0, 
BUFFER2.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 
BUFFER2.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER2, 2, 0, 
BUFFER2.length)).isEqualTo(1);
@@ -43,6 +45,7 @@ public class StringMatcherTest {
     @Test
     public void testCharSetMatcher_charArray() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.charSetMatcher("ace".toCharArray());
+        assertEquals(1, matcher.size());
         assertThat(matcher.isMatch(BUFFER2, 0, 0, 
BUFFER2.length)).isEqualTo(1);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 
BUFFER2.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER2, 2, 0, 
BUFFER2.length)).isEqualTo(1);
@@ -60,6 +63,7 @@ public class StringMatcherTest {
     @Test
     public void testCharSetMatcher_String() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.charSetMatcher("ace");
+        assertEquals(1, matcher.size());
         assertThat(matcher.isMatch(BUFFER2, 0, 0, 
BUFFER2.length)).isEqualTo(1);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 
BUFFER2.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER2, 2, 0, 
BUFFER2.length)).isEqualTo(1);
@@ -77,6 +81,7 @@ public class StringMatcherTest {
     @Test
     public void testCommaMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.commaMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.commaMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 0, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 1, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -86,6 +91,7 @@ public class StringMatcherTest {
     @Test
     public void testDoubleQuoteMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.doubleQuoteMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.doubleQuoteMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 11, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 12, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -97,6 +103,7 @@ public class StringMatcherTest {
         // all the onus is on the caller, so invalid inputs are not
         // the concern of StringMatcher, and are not bugs
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.stringMatcher("bc");
+        assertEquals(2, matcher.size());
         assertThat(matcher.isMatch(BUFFER2, 1, 1, 
BUFFER2.length)).isEqualTo(2);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 3)).isEqualTo(2);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 2)).isEqualTo(0);
@@ -105,6 +112,7 @@ public class StringMatcherTest {
     @Test
     public void testNoneMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.noneMatcher();
+        assertEquals(0, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.noneMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 0, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 1, 0, 
BUFFER1.length)).isEqualTo(0);
@@ -124,6 +132,7 @@ public class StringMatcherTest {
     @Test
     public void testQuoteMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.quoteMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.quoteMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 10, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 11, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -133,6 +142,7 @@ public class StringMatcherTest {
     @Test
     public void testSingleQuoteMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.singleQuoteMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.singleQuoteMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 10, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 11, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -142,6 +152,7 @@ public class StringMatcherTest {
     @Test
     public void testSpaceMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.spaceMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.spaceMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 4, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 5, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -151,6 +162,7 @@ public class StringMatcherTest {
     @Test
     public void testSplitMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.splitMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.splitMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 2, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 3, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -166,6 +178,7 @@ public class StringMatcherTest {
     @Test
     public void testStringMatcher_String() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.stringMatcher("bc");
+        assertEquals(2, matcher.size());
         assertThat(matcher.isMatch(BUFFER2, 0, 0, 
BUFFER2.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER2, 1, 0, 
BUFFER2.length)).isEqualTo(2);
         assertThat(matcher.isMatch(BUFFER2, 2, 0, 
BUFFER2.length)).isEqualTo(0);
@@ -182,6 +195,7 @@ public class StringMatcherTest {
     @Test
     public void testTabMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.tabMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.tabMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 2, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 3, 0, 
BUFFER1.length)).isEqualTo(1);
@@ -191,6 +205,7 @@ public class StringMatcherTest {
     @Test
     public void testTrimMatcher() {
         final StringMatcher matcher = 
StringMatcherFactory.INSTANCE.trimMatcher();
+        assertEquals(1, matcher.size());
         
assertThat(StringMatcherFactory.INSTANCE.trimMatcher()).isSameAs(matcher);
         assertThat(matcher.isMatch(BUFFER1, 2, 0, 
BUFFER1.length)).isEqualTo(0);
         assertThat(matcher.isMatch(BUFFER1, 3, 0, 
BUFFER1.length)).isEqualTo(1);

Reply via email to